From c314ed449c13a46bc47ae864e2965d528d0a6708 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 13 Oct 2024 04:17:37 +0000 Subject: [PATCH] Rebuild pages at 0dab8953ca8dbc54ed9743ac38686d3a5d44d6bb --- .../authorship.json | 2 +- AY2425S1-CS2103-F09-1_tp_master/commits.json | 2 +- .../authorship.json | 2 +- .../commits.json | 2 +- .../authorship.json | 2 +- AY2425S1-CS2103T-T15-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2425S1-CS2103T-W14-2_tp_master/commits.json | 2 +- archive.zip | Bin 9444228 -> 9466944 bytes reposense-logs/reposense.log.0 | 3322 ++++++++--------- summary.json | 2 +- 11 files changed, 1670 insertions(+), 1670 deletions(-) diff --git a/AY2425S1-CS2103-F09-1_tp_master/authorship.json b/AY2425S1-CS2103-F09-1_tp_master/authorship.json index 412eaa92..522fefcc 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":"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}}] +[{"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":"somethingfishyfishy"},"content":" return new AddressBook(sampleAb);","lastModifiedDate":"2024-10-13","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,"-":36,"somethingfishyfishy":10}},{"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 98e20bfd..65dac536 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}}}]},{"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"}} +{"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":{}},{"hash":"85853dfdd7b726fdd2a2ecf75d641a782f1307e2","isMergeCommit":false,"messageTitle":"Edit return value of method in SampleDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"6cb5e95de13f1e102457d1a3566b9fa4fb216b97","isMergeCommit":true,"messageTitle":"Merge pull request #71 from somethingfishyfishy/master","messageBody":"Edit return value of method in SampleDataUtil","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":87,"test-code":243}},"authorContributionVariance":{"LowXiSi":39547.69,"cth06-Github":3304.9375,"wuzengfu":10463.556,"WinstonJin":16872.064,"somethingfishyfishy":18526.041},"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-CS2103T-F14b-3_tp_master/authorship.json b/AY2425S1-CS2103T-F14b-3_tp_master/authorship.json index a2b01e09..b0c8c7b8 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":"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}}] +[{"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","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":"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":"linette-g"},"content":" ContactRecordList getCallHistory();","lastModifiedDate":"2024-10-12","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":{"linette-g":2,"zyng233":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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","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":"-"},"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":"linette-g"},"content":" public ContactRecordList getCallHistory() {","lastModifiedDate":"2024-10-12","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":{"linette-g":2,"zyng233":4,"-":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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList contactRecords \u003d editPersonDescriptor.getContactRecords()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"linette-g"},"content":" .orElse(personToEdit.getContactRecords());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"brendanng7"},"content":" CallFrequency updatedCallFrequency \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"brendanng7"},"content":" editPersonDescriptor.getCallFrequency().orElse(personToEdit.getCallFrequency());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" return new Person(updatedNric, updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"linette-g"},"content":" contactRecords, updatedCallFrequency);","lastModifiedDate":"2024-10-12","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":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" return (index !\u003d null \u0026\u0026 index.equals(otherEditCommand.index)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor))","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" || (nric !\u003d null \u0026\u0026 nric.equals(otherEditCommand.nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" .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":"2016-12-26","isFullCredit":false},{"lineNumber":184,"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":185,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Zenkoh1"},"content":" private Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"linette-g"},"content":" private ContactRecordList contactRecords;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"brendanng7"},"content":" private CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"GabrielCWT"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","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":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"Zenkoh1"},"content":" setNric(toCopy.nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"linette-g"},"content":" setContactRecords(toCopy.contactRecords);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"brendanng7"},"content":" setCallFrequency(toCopy.callFrequency);","lastModifiedDate":"2024-10-03","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":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"brendanng7"},"content":" return CollectionUtil.isAnyNonNull(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Zenkoh1"},"content":" public void setNric(Nric nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Zenkoh1"},"content":" public Optional\u003cNric\u003e getNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Zenkoh1"},"content":" return Optional.ofNullable(nric);","lastModifiedDate":"2024-10-01","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 void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" this.name \u003d name;","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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" this.email \u003d email;","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":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"linette-g"},"content":" public Optional\u003cContactRecordList\u003e getContactRecords() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"linette-g"},"content":" return Optional.ofNullable(contactRecords);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"linette-g"},"content":" public void setContactRecords(ContactRecordList contactRecords) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"linette-g"},"content":" this.contactRecords \u003d contactRecords;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"brendanng7"},"content":" public Optional\u003cCallFrequency\u003e getCallFrequency() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"brendanng7"},"content":" return Optional.ofNullable(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"brendanng7"},"content":" public void setCallFrequency(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Zenkoh1"},"content":" return Objects.equals(nric, otherEditPersonDescriptor.nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(callFrequency, otherEditPersonDescriptor.callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Zenkoh1"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"brendanng7"},"content":" .add(\"call frequency\", callFrequency)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"linette-g":44,"Zenkoh1":28,"GabrielCWT":7,"brendanng7":19,"-":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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList callHistory \u003d model.getCallHistory(personFound);","lastModifiedDate":"2024-10-12","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":{"linette-g":2,"zyng233":97}},{"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" private final ContactRecord contactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public MarkCommand(Index targetIndex, ContactRecord contactRecord) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" this.contactRecord \u003d contactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public MarkCommand(Nric targetNric, ContactRecord contactRecord) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" this.contactRecord \u003d contactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" model.markAsContacted(personToMark, contactRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" \u0026\u0026 contactRecord.equals(otherMarkCommand.contactRecord);","lastModifiedDate":"2024-10-12","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":38,"GabrielCWT":63}},{"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord currentRecord \u003d ContactRecord.createCurrentRecord(notes);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" return new MarkCommand(index, currentRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" return new MarkCommand(nric, currentRecord);","lastModifiedDate":"2024-10-12","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":7,"GabrielCWT":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":"-"},"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" void markAsContacted(Person target, ContactRecord contactRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList getCallHistory(Person target);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" void updateDisplayedList(ContactRecordList callHistory);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList getDisplayedCallHistory();","lastModifiedDate":"2024-10-12","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":8,"Zenkoh1":20,"GabrielCWT":6,"zyng233":14,"-":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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public void markAsContacted(Person target, ContactRecord contactRecord) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(target);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"linette-g"},"content":" target.markAsContacted(contactRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public ContactRecordList getCallHistory(Person target) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"zyng233"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" return target.getContactRecords();","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public void updateDisplayedList(ContactRecordList callHistory) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" for (ContactRecord record : callHistory) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"linette-g"},"content":" displayedCallHistory.add(record.toString());","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public ContactRecordList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" ContactRecordList callHistory \u003d new ContactRecordList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"zyng233"},"content":" for (String call : displayedCallHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"linette-g"},"content":" ContactRecord contactRecord \u003d new ContactRecord(call, \"\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"linette-g"},"content":" callHistory.add(contactRecord);","lastModifiedDate":"2024-10-12","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":24,"Zenkoh1":12,"GabrielCWT":4,"zyng233":22,"-":147}},{"path":"src/main/java/seedu/address/model/contactrecord/ContactRecord.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"package seedu.address.model.contactrecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactRecord(String)}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":"public class ContactRecord {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Constructs a {@code ContactRecord}.","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public ContactRecord(String date, String notes) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" checkArgument(isValidContactRecord(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Returns true if a given string is a valid record with a valid date.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" public static boolean isValidContactRecord(String test) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Returns the current record.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"linette-g"},"content":" public static ContactRecord createCurrentRecord(String notes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"linette-g"},"content":" return new ContactRecord(LocalDate.now().toString(), notes);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Returns a new {@code ContactRecord} that is a specified number of days after the current date.","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * @return A new {@code ContactRecord} that is {@code callFrequency} days after the current date.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" public ContactRecord add(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" return new ContactRecord(value.plusDays(daysToAdd).toString(), \"\"); // Create and return a new ContactRecord","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" if (!(other instanceof ContactRecord)) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord otherRecord \u003d (ContactRecord) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"linette-g"},"content":" return value.equals(otherRecord.value) \u0026\u0026 notes.equals(otherRecord.notes);","lastModifiedDate":"2024-10-12","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":{"linette-g":18,"GabrielCWT":68,"zyng233":2,"brendanng7":11}},{"path":"src/main/java/seedu/address/model/contactrecord/ContactRecordList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"package seedu.address.model.contactrecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"linette-g"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"linette-g"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":" * Represents a List of ContactRecords in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"public class ContactRecordList extends ArrayList\u003cContactRecord\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":" public ContactRecordList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"linette-g"},"content":" super();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":" * Creates a ContactRecordList with the given ContactRecords.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":" * @param contactRecordsToAdd","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":" public ContactRecordList(ContactRecord...contactRecordsToAdd) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":" super();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":" for (ContactRecord contactRecord : contactRecordsToAdd) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":" this.add(contactRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" public ContactRecordList(ArrayList\u003cContactRecord\u003e contactRecords) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" super(contactRecords);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" * Adds all the ContactRecords in the given ContactRecordList to this ContactRecordList.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"linette-g"},"content":" * @param contactRecordList","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" public void addAll(ContactRecordList contactRecordList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" for (ContactRecord contactRecord : contactRecordList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" this.add(contactRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" * Adds the current record to the ContactRecordList.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" public void markAsContacted(String notes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" this.add(ContactRecord.createCurrentRecord(notes));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" * Adds the given ContactRecord to the ContactRecordList.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" * @param contactRecord","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" public void markAsContacted(ContactRecord contactRecord) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" this.add(contactRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"linette-g"},"content":" * Returns the last ContactRecord in the ContactRecordList.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"linette-g"},"content":" * @return the most recent ContactRecord.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"linette-g"},"content":" * @throws IndexOutOfBoundsException if the list is empty.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"linette-g"},"content":" public ContactRecord getLastContacted() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"linette-g"},"content":" if (this.size() \u003d\u003d 0) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" throw new IndexOutOfBoundsException(\"No ContactRecords in the list.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"linette-g"},"content":" return this.get(this.size() - 1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"linette-g"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"linette-g"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"linette-g"},"content":" if (!(other instanceof ContactRecordList)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"linette-g"},"content":" ContactRecordList that \u003d (ContactRecordList) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"linette-g"},"content":" if (this.size() \u003d\u003d that.size()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"linette-g"},"content":" for (int i \u003d 0; i \u003c this.size(); i++) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"linette-g"},"content":" if (!this.get(i).equals(that.get(i))) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"linette-g"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"linette-g":88}},{"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" private final ContactRecordList contactRecords \u003d new ContactRecordList();","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList contactRecords, CallFrequency callFrequency) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" requireAllNonNull(nric, name, phone, email, address, tags, contactRecords, callFrequency);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" this.contactRecords.addAll(contactRecords);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" this(nric, name, phone, email, address, tags, new ContactRecordList(ContactRecord.createCurrentRecord(\"\")),","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public ContactRecordList getContactRecords() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"linette-g"},"content":" return contactRecords;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public ContactRecord getLastContacted() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"linette-g"},"content":" return contactRecords.getLastContacted();","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public ContactRecord getNextContactRecord() {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public void markAsContacted(ContactRecord contactRecord) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"linette-g"},"content":" contactRecords.markAsContacted(contactRecord);","lastModifiedDate":"2024-10-12","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":{"linette-g":14,"Zenkoh1":30,"GabrielCWT":16,"brendanng7":12,"-":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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" getTagSet(\"friends\"), new ContactRecordList(new ContactRecord(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" getTagSet(\"colleagues\", \"friends\"), new ContactRecordList(new ContactRecord(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" getTagSet(\"neighbours\"), new ContactRecordList(new ContactRecord(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" getTagSet(\"family\"), new ContactRecordList(new ContactRecord(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" getTagSet(\"classmates\"), new ContactRecordList(new ContactRecord(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" getTagSet(\"colleagues\"), new ContactRecordList(new ContactRecord(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-12","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":{"linette-g":8,"Zenkoh1":13,"brendanng7":7,"-":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedContactRecord.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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Jackson-friendly version of {@link ContactRecord}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"public class JsonAdaptedContactRecord {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"ContactRecord\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Constructs a {@code JsonAdaptedContactRecord} with the given {@code contactRecord}.","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public JsonAdaptedContactRecord(@JsonProperty(\"date\") String date, @JsonProperty(\"notes\") String notes) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Converts a given {@code ContactRecord} into this class for Jackson use.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" public JsonAdaptedContactRecord(ContactRecord source) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Converts this Jackson-friendly adapted contact date object into the model\u0027s {@code ContactRecord} object.","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public ContactRecord toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" if (!ContactRecord.isValidContactRecord(date)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" throw new IllegalValueException(ContactRecord.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" return new ContactRecord(date, notes);","lastModifiedDate":"2024-10-12","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":{"linette-g":13,"GabrielCWT":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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" private final List\u003cJsonAdaptedContactRecord\u003e contactRecords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" @JsonProperty(\"contactRecords\") List\u003cJsonAdaptedContactRecord\u003e contactRecords,","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" if (contactRecords !\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"linette-g"},"content":" this.contactRecords.addAll(contactRecords);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" contactRecords.addAll(source.getContactRecords().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"linette-g"},"content":" .map(JsonAdaptedContactRecord::new)","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" final ArrayList\u003cContactRecord\u003e personContactRecords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" if (contactRecords.isEmpty()) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList.class.getSimpleName()));","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" for (JsonAdaptedContactRecord contactRecord : contactRecords) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"linette-g"},"content":" personContactRecords.add(contactRecord.toModelType());","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" final ContactRecordList modelContactRecords \u003d new ContactRecordList(personContactRecords);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" modelContactRecords, modelCallFrequency);","lastModifiedDate":"2024-10-12","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":{"linette-g":15,"Zenkoh1":13,"GabrielCWT":8,"brendanng7":16,"-":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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" private Label contactRecordLabel;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public CallHistoryCard(ContactRecord contactRecord, int index) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" contactRecordLabel.setText(contactRecord.toString());","lastModifiedDate":"2024-10-12","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":{"linette-g":4,"zyng233":24}},{"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" private ListView\u003cContactRecord\u003e callHistoryView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":" private ObservableList\u003cContactRecord\u003e items;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" protected void updateItem(ContactRecord contactRecord, boolean empty) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" super.updateItem(contactRecord, empty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" if (empty || contactRecord \u003d\u003d null) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" CallHistoryCard card \u003d new CallHistoryCard(contactRecord, index);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" * Initializes the call history panel with the given {@code ContactRecordList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" public void initializeCallHistory(ContactRecordList history) {","lastModifiedDate":"2024-10-12","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":{"linette-g":10,"zyng233":42}},{"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":"linette-g"},"content":" \u003cLabel fx:id\u003d\"contactRecordLabel\" styleClass\u003d\"cell_big_label\"/\u003e \u003c!-- Change fx:id to match Java code --\u003e","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" \u003cLabel fx:id\u003d\"contactRecord\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-12","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":{"linette-g":2,"zyng233":18}},{"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList callHistory \u003d new ContactRecordList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"linette-g"},"content":" callHistory.add(new ContactRecord(\"2021-01-01\", \"\"));","lastModifiedDate":"2024-10-12","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":{"linette-g":4,"Zenkoh1":1,"zyng233":6,"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public void markAsContacted(Person target, ContactRecord notes) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public void updateDisplayedList(ContactRecordList callHistory) {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public ContactRecordList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public ContactRecordList getCallHistory(Person target) {","lastModifiedDate":"2024-10-12","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":12,"Zenkoh1":29,"GabrielCWT":4,"zyng233":12,"-":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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecordList;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecordList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-12","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":{"linette-g":5,"zyng233":214}},{"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":"import seedu.address.testutil.ContactRecordBuilder;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" expectedModel.markAsContacted(personToMark, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"linette-g"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"linette-g"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" expectedModel.markAsContacted(personToMark, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"linette-g"},"content":" MarkCommand markFirstCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"linette-g"},"content":" MarkCommand markSecondCommand \u003d new MarkCommand(INDEX_SECOND_PERSON, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" MarkCommand markFirstCommandCopy \u003d new MarkCommand(INDEX_FIRST_PERSON, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord2 \u003d new ContactRecordBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"linette-g"},"content":" MarkCommand markFirstCommandDifferentDate \u003d new MarkCommand(INDEX_FIRST_PERSON, validRecord2);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"linette-g"},"content":" MarkCommand markFirstNric \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"linette-g"},"content":" MarkCommand markSecondNric \u003d new MarkCommand(new Nric(VALID_NRIC_BOB), validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" MarkCommand markFirstNricCopy \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord2 \u003d new ContactRecordBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"linette-g"},"content":" MarkCommand markFirstNricDifferentDate \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validRecord2);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"linette-g"},"content":" MarkCommand markCommandWithIndex \u003d new MarkCommand(targetIndex, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" MarkCommand markCommandWithNric \u003d new MarkCommand(targetNric, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":" MarkCommand markCommand \u003d new MarkCommand(personToMark.getNric(), validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" expectedModel.markAsContacted(personToMark, validRecord);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"linette-g"},"content":" MarkCommand markCommand \u003d new MarkCommand(unregisteredNric, validRecord);","lastModifiedDate":"2024-10-12","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":85,"GabrielCWT":105}},{"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":"import seedu.address.testutil.ContactRecordBuilder;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" assertEquals(new MarkCommand(INDEX_FIRST_PERSON, validRecord), command);","lastModifiedDate":"2024-10-12","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":{"linette-g":4,"GabrielCWT":10,"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":"import seedu.address.testutil.ContactRecordBuilder;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" assertParseSuccess(parser, \"1\" + NOTES_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" new MarkCommand(INDEX_FIRST_PERSON, validRecord));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" public void parse_validNric_returnsMarkCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY + NOTES_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" new MarkCommand(new Nric(VALID_NRIC_AMY), validRecord));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" public void parse_emptyNotes_returnsMarkCommand() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" ContactRecord validRecord \u003d new ContactRecordBuilder().withNotes(\"\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" assertParseSuccess(parser, \"1\", new MarkCommand(INDEX_FIRST_PERSON, validRecord));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"linette-g":18,"GabrielCWT":35}},{"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/contactrecord/ContactRecordListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"package seedu.address.model.contactrecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"linette-g"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"linette-g"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import seedu.address.testutil.ContactRecordBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"public class ContactRecordListTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":" public void getLastContacted() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":" ContactRecordList contactRecordList \u003d new ContactRecordList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":" // Throws IndexOutOfBoundsException when list is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":" try {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":" contactRecordList.getLastContacted();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":" assertTrue(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" // test 1","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" ContactRecord contactRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" contactRecordList.add(contactRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" assertEquals(contactRecord, contactRecordList.getLastContacted());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":" // test 2","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" ContactRecord newContactRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"linette-g"},"content":" contactRecordList.add(newContactRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" assertEquals(newContactRecord, contactRecordList.getLastContacted());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" public void markAsContacted() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" ContactRecordList contactRecordList \u003d new ContactRecordList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" ContactRecord contactRecord \u003d new ContactRecordBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" contactRecordList.markAsContacted(VALID_NOTES);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" assertEquals(1, contactRecordList.size());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":" assertEquals(contactRecord, contactRecordList.getLastContacted());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" public void markAsContacted_contactRecordProvided() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" ContactRecordList contactRecordList \u003d new ContactRecordList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" ContactRecord contactRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" contactRecordList.markAsContacted(contactRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"linette-g"},"content":" assertEquals(1, contactRecordList.size());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" assertEquals(contactRecord, contactRecordList.getLastContacted());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"linette-g"},"content":" public void equals() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"linette-g"},"content":" ContactRecordList contactRecordList \u003d new ContactRecordList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"linette-g"},"content":" ContactRecordList contactRecordListCopy \u003d new ContactRecordList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"linette-g"},"content":" ContactRecordList contactRecordListCopy2 \u003d new ContactRecordList(new ContactRecord(\"2021-10-10\", \"\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"linette-g"},"content":" ContactRecordList contactRecordListCopy3 \u003d new ContactRecordList(new ContactRecord(\"2021-10-11\", \"\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" assertTrue(contactRecordList.equals(contactRecordList));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"linette-g"},"content":" // different object, same types, same values -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"linette-g"},"content":" assertTrue(contactRecordList.equals(contactRecordListCopy));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" // different object, same types, different values -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"linette-g"},"content":" assertFalse(contactRecordListCopy2.equals(contactRecordListCopy3));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"linette-g"},"content":" assertFalse(contactRecordList.equals(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"linette-g"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"linette-g"},"content":" assertFalse(contactRecordList.equals(5.0f));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"linette-g"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"linette-g":75}},{"path":"src/test/java/seedu/address/model/contactrecord/ContactRecordTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"package seedu.address.model.contactrecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"linette-g"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"linette-g"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"linette-g"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":"import seedu.address.testutil.ContactRecordBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":"public class ContactRecordTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactRecord(null, VALID_NOTES));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":" public void constructor_invalidContactRecord_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" String invalidDate \u003d \"\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ContactRecord(invalidDate, VALID_NOTES));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":" public void isValidContactRecord() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" // null tag contact date","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"linette-g"},"content":" assertThrows(NullPointerException.class, () -\u003e ContactRecord.isValidContactRecord(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" // invalid date in contact record","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" assertFalse(ContactRecord.isValidContactRecord(\"2020-13-01\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" assertFalse(ContactRecord.isValidContactRecord(\"2020-01-32\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" assertFalse(ContactRecord.isValidContactRecord(\"\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" // valid date in contact record","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" assertTrue(ContactRecord.isValidContactRecord(\"2020-01-01\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" public void createCurrentRecord() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" ContactRecord currentRecord \u003d ContactRecord.createCurrentRecord(VALID_NOTES);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" assertEquals(currentRecord.value, currentDate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" assertEquals(currentRecord.getNotes(), VALID_NOTES);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" public void addCallFrequency_validCallFrequency_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" ContactRecord contactRecord \u003d new ContactRecordBuilder().withDate(\"2020-01-01\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"linette-g"},"content":" CallFrequency callFrequency \u003d new CallFrequency(\"7\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"linette-g"},"content":" ContactRecord newContactRecord \u003d contactRecord.add(callFrequency);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"linette-g"},"content":" ContactRecord targetContactRecord \u003d new ContactRecordBuilder().withDate(\"2020-01-08\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"linette-g"},"content":" assertEquals(newContactRecord, targetContactRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"linette-g"},"content":" public void equals() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"linette-g"},"content":" ContactRecord contactRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"linette-g"},"content":" ContactRecord contactRecordCopy \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"linette-g"},"content":" assertTrue(contactRecord.equals(contactRecordCopy));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"linette-g"},"content":" assertTrue(contactRecord.equals(contactRecord));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"linette-g"},"content":" assertFalse(contactRecord.equals(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"linette-g"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"linette-g"},"content":" assertFalse(contactRecord.equals(5.0f));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"linette-g"},"content":" // different date -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"linette-g"},"content":" ContactRecord differentDate \u003d new ContactRecordBuilder().withDate(\"2020-01-02\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"linette-g"},"content":" assertFalse(contactRecord.equals(differentDate));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"linette-g"},"content":" // different notes -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"linette-g"},"content":" ContactRecord differentNotes \u003d new ContactRecordBuilder().withNotes(\"Different notes\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"linette-g"},"content":" assertFalse(contactRecord.equals(differentNotes));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"linette-g":84}},{"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":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":"import seedu.address.testutil.ContactRecordBuilder;","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" ContactRecord contactRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"linette-g"},"content":" person.markAsContacted(contactRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"linette-g"},"content":" // 1 contact record added on initialisation and another added by markAsContacted","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"linette-g"},"content":" assertEquals(2, person.getContactRecords().size());","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" assertEquals(person.getContactRecords().getLastContacted(), person.getLastContacted());","lastModifiedDate":"2024-10-12","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":{"linette-g":7,"Zenkoh1":58,"GabrielCWT":10,"brendanng7":5,"-":87}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedContactRecordTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"linette-g"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"linette-g"},"content":"import static seedu.address.storage.JsonAdaptedContactRecord.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.testutil.ContactRecordBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":"public class JsonAdaptedContactRecordTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":" private static final String INVALID_DATE \u003d \"2024-13-01\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":" private static final String VALID_DATE \u003d \"2024-01-01\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":" public void toModelType_validContactRecordDetails_returnsContactRecord() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":" ContactRecord contactRecord \u003d new ContactRecordBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":" JsonAdaptedContactRecord jsonContactRecord \u003d new JsonAdaptedContactRecord(contactRecord);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":" assertEquals(contactRecord, jsonContactRecord.toModelType());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" public void toModelType_invalidDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" JsonAdaptedContactRecord jsonContactRecord \u003d new JsonAdaptedContactRecord(INVALID_DATE, VALID_NOTES);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d ContactRecord.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactRecord::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" public void toModelType_nullDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" JsonAdaptedContactRecord jsonContactRecord \u003d new JsonAdaptedContactRecord(null, VALID_NOTES);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"date\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactRecord::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" public void toModelType_nullNotes_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":" JsonAdaptedContactRecord jsonContactRecord \u003d new JsonAdaptedContactRecord(VALID_DATE, null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"notes\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactRecord::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"linette-g":45}},{"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":"linette-g"},"content":" private static final List\u003cJsonAdaptedContactRecord\u003e VALID_CONTACT_RECORDS \u003d BENSON.getContactRecords().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" .map(JsonAdaptedContactRecord::new)","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" INVALID_ADDRESS, VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_TAGS, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" invalidTags, VALID_CONTACT_RECORDS, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public void toModelType_invalidContactRecords_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" List\u003cJsonAdaptedContactRecord\u003e invalidContactRecords \u003d new ArrayList\u003c\u003e(VALID_CONTACT_RECORDS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"linette-g"},"content":" invalidContactRecords.add(new JsonAdaptedContactRecord(INVALID_CONTACT_DATE, VALID_NOTES));","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_TAGS, invalidContactRecords, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" public void toModelType_emptyContactRecords_returnsPerson() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"linette-g"},"content":" List\u003cJsonAdaptedContactRecord\u003e emptyContactRecords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_TAGS, emptyContactRecords, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_RECORDS, INVALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-12","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":"linette-g"},"content":" VALID_TAGS, VALID_CONTACT_RECORDS, null);","lastModifiedDate":"2024-10-12","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":{"linette-g":22,"Zenkoh1":14,"GabrielCWT":24,"brendanng7":17,"-":99}},{"path":"src/test/java/seedu/address/testutil/ContactRecordBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.contactrecord.ContactRecord;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"linette-g"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":" * A utility class to help with building ContactRecord objects.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"public class ContactRecordBuilder {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":" public static final String DEFAULT_DATE \u003d null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":" public static final String DEFAULT_NOTES \u003d \"This is a default note\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":" private String date;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":" private String notes;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":" * Creates a {@code ContactRecordBuilder} with the default details.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":" public ContactRecordBuilder() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":" date \u003d DEFAULT_DATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":" notes \u003d DEFAULT_NOTES;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" * Initializes the ContactRecordBuilder with the data of {@code contactRecordToCopy}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" public ContactRecordBuilder(ContactRecord contactRecordToCopy) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" date \u003d contactRecordToCopy.value.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"linette-g"},"content":" notes \u003d contactRecordToCopy.getNotes();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" * Sets the {@code Date} of the {@code ContactRecord} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" public ContactRecordBuilder withDate(String date) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" * Sets the {@code Notes} of the {@code ContactRecord} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" public ContactRecordBuilder withNotes(String notes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" * Builds the ContactRecord object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" public ContactRecord build() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"linette-g"},"content":" return ContactRecord.createCurrentRecord(notes);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"linette-g"},"content":" return new ContactRecord(date, notes);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"linette-g"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"linette-g":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 91223d63..dd10a571 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":{}}]},{"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"}} +{"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":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"f60bb9f01dcd120d2e26ab74130d3d875dfcf84a","isMergeCommit":false,"messageTitle":"Refactor ContactDate to ContactRecord","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":187,"deletions":187},"other":{"insertions":31,"deletions":31},"test-code":{"insertions":350,"deletions":349}}},{"hash":"1b263e963e8f19eff78350853759166e7ce56458","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-13","commitResults":[{"hash":"04144cf443042150fa8b37ba2e7be7ac8223e890","isMergeCommit":true,"messageTitle":"Merge pull request #60 from linette-g/branch-refactor","messageBody":"Refactor ContactDate to ContactRecord","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":383,"test-code":551},"Zenkoh1":{"docs":52,"functional-code":334,"test-code":468},"GabrielCWT":{"docs":201,"functional-code":250,"test-code":191},"zyng233":{"docs":4,"functional-code":311,"test-code":314},"brendanng7":{"docs":50,"functional-code":175,"test-code":198,"other":3}},"authorContributionVariance":{"linette-g":54030.19,"Zenkoh1":32226.742,"GabrielCWT":16604.244,"zyng233":31041.97,"brendanng7":13506.583},"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-T15-2_tp_master/authorship.json b/AY2425S1-CS2103T-T15-2_tp_master/authorship.json index cd8eb5e7..eea04da4 100644 --- a/AY2425S1-CS2103T-T15-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-T15-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-T15-2/tp/actions)","lastModifiedDate":"2024-09-15","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":"hooyushing"},"content":"## EduTuTu - Address Book to manage students\u0027 information :man_student:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"hooyushing"},"content":"* EduTuTu is a desktop application for managing contacts.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"hooyushing"},"content":"* EduTuTu aims to help tuition centers that need organized and efficient communication between **teachers, students, and parents**.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"hooyushing"},"content":"* EduTuTu is customized for tuition centres to manage their students\u0027 information.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"hooyushing"},"content":"* EduTuTu is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"hooyushing"},"content":"* Whether you’re updating parents about class schedules, sharing student progress reports, or coordinating with teachers, this tool simplifies the process, ensuring nothing falls through the cracks.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"hooyushing"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"hooyushing":9,"-":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: 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":"-"},"content":"### Hoo Yu Shing","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/hooyushing.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[github](https://github.com/hooyushing)]","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"hooyushing"},"content":"[[portfolio](https://www.linkedin.com/in/hoo-yu-shing-252a08238/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"sumomomomomo"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"sumomomomomo"},"content":"* Responsibilities: Responsible for overall project coordination.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"### Wong Wai Hin","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"waihin26"},"content":"\u003cimg src\u003d\"images/waihin26.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"waihin26"},"content":"[[github](http://github.com/waihin26)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"waihin26"},"content":"[[portfolio](https://www.linkedin.com/in/wai-hin-wong-6875ab110/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"waihin26"},"content":"* Role: Deliverables and Deadline","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"waihin26"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Matthew Ho","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"sumomomomomo"},"content":"\u003cimg src\u003d\"images/sumomomomomo.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"sumomomomomo"},"content":"[[github](http://github.com/sumomomomomo)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"sumomomomomo"},"content":"[[portfolio](https://www.linkedin.com/in/matthew-ho-803a41192/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"sumomomomomo"},"content":"* Role: Code Quality","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"sumomomomomo"},"content":"* Responsibilities: Looks after code quality; ensures adherence to coding standards.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"hooyushing"},"content":"### Munhui Kim","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"munhuikim"},"content":"\u003cimg src\u003d\"images/munhuikim.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"munhuikim"},"content":"[[github](http://github.com/munhuikim)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"munhuikim"},"content":"[[portfolio](https://www.linkedin.com/in/munhui-kim/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"sumomomomomo"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"munhuikim"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Vu Hoang Kien","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"kienvumrpm"},"content":"\u003cimg src\u003d\"images/kienvumrpm.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"kienvumrpm"},"content":"[[github](http://github.com/kienvumrpm)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"kienvumrpm"},"content":"[[portfolio](https://www.linkedin.com/in/kienvu2211/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"kienvumrpm"},"content":"* Role: Implementor","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"sumomomomomo"},"content":"* Responsibilities: Help others to debug.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"waihin26":5,"hooyushing":2,"sumomomomomo":9,"-":37,"munhuikim":4,"kienvumrpm":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: 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":"sumomomomomo"},"content":"**Target user profile**: Tuition center administrative staff","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"sumomomomomo"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2024-09-30","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":"sumomomomomo"},"content":"**Value proposition**: ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"sumomomomomo"},"content":"* manage student contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"sumomomomomo"},"content":"* one-shot command focus for significantly quicker usage","lastModifiedDate":"2024-09-30","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":"munhuikim"},"content":"|----------|--------------------------------------|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | keep different levels of access for contact information | keep sensitive information not accessible to unauthorized users |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | search for contacts based on multiple criteria (name, role, or ID) | can find a specific person quickly without manually scrolling the list |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | a user-friendly command-line interface with clear and concise command options | quickly perform tasks without a usage guide |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | manage, retrieve and update the contact information for teachers, students and parents | smoothly communicate across all parties without any confusions or delays |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | able to perform mutliple actions at once | increase the productivity |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | add note about individual students (e.g. learning preferences, special needs, etc) | can personalise learning experience |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"munhuikim"},"content":"| `* *` | Tuition Center Administrators | send automated payment notifications to parents | can ensure timely payments |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"munhuikim"},"content":"| `* *` | Tuition Center Administrators | integrate a billing system that automatically calculates monthly fees and generate invoices | can reduce workload |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"munhuikim"},"content":"| `* *` | Tuition Center Administrators | log and track communication history with parents, teachers and students | ensure continuity in communication |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"waihin26"},"content":"### System: EduTuTu","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC01: Add Student**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"waihin26"},"content":"1. Administrator types the command to add a new student with the required details in a single line.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"waihin26"},"content":"2. EduTuTu validates the input details.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"waihin26"},"content":"3. EduTuTu adds the new student to the system and logs the action.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"waihin26"},"content":"**Extensions**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"waihin26"},"content":"- **2a. Invalid or Missing Data**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"waihin26"},"content":" - 2a1. EduTuTu logs an error message specifying the invalid fields.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"waihin26"},"content":" - Use case resumes from step 1.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"waihin26"},"content":"- **2b. Duplicate Student Detected**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"waihin26"},"content":" - 2b1. EduTuTu logs an error message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"waihin26"},"content":" - Use case resumes from step 1.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC02: Delete Student**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"waihin26"},"content":"1. Administrator types the command to delete a student using their unique index:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"waihin26"},"content":"2. EduTuTu validates the index.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"waihin26"},"content":"3. EduTuTu deletes the student and logs the details of the deleted student.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"waihin26"},"content":"**Extensions**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"waihin26"},"content":"- **2a. Invalid Index Entered**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"waihin26"},"content":" - 2a1. EduTuTu logs an error message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"waihin26"},"content":" - **Use case resumes from step 1.**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC03: List All Students**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"waihin26"},"content":"1. Administrator types the command to list all students.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"waihin26"},"content":"2. EduTuTu retrieves all student records and outputs the list in the terminal with unique indices.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC04: Find Students**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"waihin26"},"content":"1. Administrator types the command to search for students by name or class ID.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"waihin26"},"content":"2. EduTuTu validates the search criteria.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"waihin26"},"content":"3. EduTuTu searches the system and outputs matching students with unique indices.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"waihin26"},"content":"**Extensions**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"waihin26"},"content":"- **2a. Invalid Search Criteria**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"waihin26"},"content":" - 2a1.EduTuTu logs an error message specifying the invalid input.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"waihin26"},"content":" - **Use case resumes from step 1.**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC05: Mark Fees as Paid**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"waihin26"},"content":"1. Administrator first searches for the student using the find command.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"waihin26"},"content":"2. EduTuTu displays a list of students with unique indices.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"waihin26"},"content":"3. Administrator types the command to mark a student\u0027s fees as paid, including the student index and date:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"waihin26"},"content":"4. EduTuTu validates the student index and date format.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"waihin26"},"content":"5. EduTuTu updates the student\u0027s record and logs the payment confirmation.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"waihin26"},"content":"**Extensions**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"waihin26"},"content":"- **3a. Invalid Index Entered**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"waihin26"},"content":" - 3a1. EduTuTu logs an error message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"waihin26"},"content":" - **Use case resumes from step 1.**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"waihin26"},"content":"- **3b. Invalid Date Format or Month**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"waihin26"},"content":" - 3b1. EduTuTu logs an error message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"waihin26"},"content":" - **Use case resumes from step 1.**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"waihin26"},"content":"**1. Performance Requirements**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"waihin26"},"content":"- **Response Time**: The system should respond to any command within **1 second** under normal operating conditions.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"waihin26"},"content":"- **Throughput**: Capable of processing **concurrent commands** from multiple administrators without significant delay.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"waihin26"},"content":"- **Capacity**: Should handle up to **1,000 students** without noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"waihin26"},"content":"**2. Maintainability Requirements**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"waihin26"},"content":"- **Code Quality**: The codebase should be **modular**, well-documented, and adhere to standard coding conventions to facilitate maintenance.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"waihin26"},"content":"- **Documentation**: Provide **comprehensive technical documentation** for future developers and maintainers.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"waihin26"},"content":"- **Automated Testing**: Implement **unit tests** and **integration tests** to ensure that new changes do not break existing functionality.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"waihin26"},"content":"**3. Portability Requirements**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"waihin26"},"content":"- **Cross-Platform Compatibility**: The application must run on any mainstream operating system (**Windows, macOS, Linux**) with **Java 17** or above installed.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"waihin26"},"content":"- **Minimal Dependencies**: Avoid platform-specific dependencies to ensure **ease of deployment** across different environments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"waihin26"},"content":"**4. Ethical Requirements**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"waihin26"},"content":"- **Non-Discrimination**: The system should be designed to avoid biases, especially in features like **sorting** or **filtering**.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"waihin26"},"content":"- **Transparency**: Actions performed by the system should be **transparent** to users, avoiding hidden processes that could cause confusion.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"waihin26"},"content":"This version uses clear formatting with bullet points for better readability and structure.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":429,"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":430,"author":{"gitId":"munhuikim"},"content":"* **Tuition Center Administrator**: The person responsible for overseeing the operations of the tuition center, managing contacts, scheduling, and communication with students, parents, and teachers.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"munhuikim"},"content":"* **Data Migration**: The process of transferring data from one system to another. This feature ensures that contacts, communication history, and other data can be shared across different platforms or stakeholders.","lastModifiedDate":"2024-09-27","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":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"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":440,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"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":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"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":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","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 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"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":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"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":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"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":474,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","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":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"waihin26":114,"sumomomomomo":6,"-":352,"munhuikim":12}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"hooyushing"},"content":"title: \"EduTuTu\"","lastModifiedDate":"2024-09-27","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":"hooyushing"},"content":"repository: \"AY2425S1-CS2103T-T15-2/tp\"","lastModifiedDate":"2024-09-27","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":{"hooyushing":2,"-":13}},{"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":"waihin26"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-09-27","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":"-"},"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":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","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":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"sumomomomomo"},"content":" Fees updatedFees \u003d personToEdit.getFees();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"sumomomomomo"},"content":" ClassId updatedClassId \u003d personToEdit.getClassId();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"sumomomomomo"},"content":" MonthsPaid updatedMonthsPaid \u003d personToEdit.getMonthsPaid();","lastModifiedDate":"2024-10-02","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":"waihin26"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedFees, updatedClassId,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"waihin26"},"content":" updatedMonthsPaid, updatedTags);","lastModifiedDate":"2024-09-27","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":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","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":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14","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 void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.name \u003d 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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.phone \u003d 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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.email \u003d 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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.address \u003d 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":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"waihin26":5,"sumomomomomo":3,"-":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":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"hooyushing"},"content":"import seedu.address.model.person.ClassIdContainsKeywordsPredicate;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","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 COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"hooyushing"},"content":" + \"Example: \" + COMMAND_WORD + \" n/alice bob charlie\";","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"hooyushing"},"content":" private final ClassIdContainsKeywordsPredicate predicateClassId;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"hooyushing"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"hooyushing"},"content":" * Stores the predicate to be used to filter the list of persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"hooyushing"},"content":" * @param predicate the predicate to be used to filter the list of persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"hooyushing"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"hooyushing"},"content":" this.predicateClassId \u003d null;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":" * Stores the predicate to be used to filter the list of persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":" * @param predicate the predicate to be used to filter the list of persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"hooyushing"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"hooyushing"},"content":" public FindCommand(ClassIdContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"hooyushing"},"content":" this.predicateClassId \u003d predicate;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"hooyushing"},"content":" this.predicate \u003d null;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"hooyushing"},"content":" if (predicate !\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"hooyushing"},"content":" } else if (predicateClassId !\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"hooyushing"},"content":" model.updateFilteredPersonList(predicateClassId);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","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":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"hooyushing"},"content":" return (predicate !\u003d null ? predicate.equals(otherFindCommand.predicate)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"hooyushing"},"content":" : predicateClassId.equals(otherFindCommand.predicateClassId));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","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":"hooyushing"},"content":" if (predicate !\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"hooyushing"},"content":" } else {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"hooyushing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"hooyushing"},"content":" .add(\"predicate\", predicateClassId)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"hooyushing"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"hooyushing":37,"-":56}},{"path":"src/main/java/seedu/address/logic/commands/MarkpaidCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kienvumrpm"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"kienvumrpm"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"kienvumrpm"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"kienvumrpm"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"kienvumrpm"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"kienvumrpm"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"sumomomomomo"},"content":" * Marks an existing person in the address book as paid for a specified month.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"kienvumrpm"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"kienvumrpm"},"content":"public class MarkpaidCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"kienvumrpm"},"content":" public static final String COMMAND_WORD \u003d \"markpaid\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"sumomomomomo"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Marks the months paid for the person identified \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"sumomomomomo"},"content":" + \"Existing months paid of that person will be overwritten by input to this command.\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"sumomomomomo"},"content":" + \"Parameters: INDEX (must be a positive integer) MONTHSPAID... (yyyy-mm format)\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"sumomomomomo"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2024-01 2024-02\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"kienvumrpm"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"kienvumrpm"},"content":" private final Index index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"kienvumrpm"},"content":" private final String monthPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"kienvumrpm"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"kienvumrpm"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"kienvumrpm"},"content":" * @param monthPaid the month to mark the person as paid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"kienvumrpm"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"kienvumrpm"},"content":" public MarkpaidCommand(Index index, String monthPaid) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"kienvumrpm"},"content":" requireNonNull(index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"kienvumrpm"},"content":" requireNonNull(monthPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"kienvumrpm"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"kienvumrpm"},"content":" this.monthPaid \u003d monthPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"kienvumrpm"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"kienvumrpm"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"kienvumrpm"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"kienvumrpm"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"kienvumrpm"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"kienvumrpm"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"kienvumrpm"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"kienvumrpm"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"kienvumrpm"},"content":" Person personToMark \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"kienvumrpm"},"content":" Person markedPerson \u003d createMarkedPerson(personToMark, monthPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"kienvumrpm"},"content":" model.setPerson(personToMark, markedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"kienvumrpm"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"kienvumrpm"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(markedPerson)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"kienvumrpm"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"kienvumrpm"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"kienvumrpm"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"kienvumrpm"},"content":" * marked with {@code monthPaid}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"kienvumrpm"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"kienvumrpm"},"content":" private static Person createMarkedPerson(Person personToMark, String monthPaid) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"kienvumrpm"},"content":" assert personToMark !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"kienvumrpm"},"content":" Name name \u003d personToMark.getName();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"kienvumrpm"},"content":" Phone phone \u003d personToMark.getPhone();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"kienvumrpm"},"content":" Email email \u003d personToMark.getEmail();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"kienvumrpm"},"content":" Address address \u003d personToMark.getAddress();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"kienvumrpm"},"content":" Fees fees \u003d personToMark.getFees();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"kienvumrpm"},"content":" ClassId classId \u003d personToMark.getClassId();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"kienvumrpm"},"content":" MonthsPaid markedMonthsPaid \u003d new MonthsPaid(personToMark.getMonthsPaid() + \" \" + monthPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"kienvumrpm"},"content":" Set\u003cTag\u003e tags \u003d personToMark.getTags();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"kienvumrpm"},"content":" return new Person(name, phone, email, address, fees, classId,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"kienvumrpm"},"content":" markedMonthsPaid, tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"kienvumrpm"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"kienvumrpm"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"sumomomomomo":6,"kienvumrpm":83}},{"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":"waihin26"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-09-27","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":"sumomomomomo"},"content":" // TODO: fees, classid, monthspaid are set to basic default values by default","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","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":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","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":"sumomomomomo"},"content":" Fees fees \u003d new Fees(\"564\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"sumomomomomo"},"content":" ClassId classId \u003d new ClassId(\"1\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"sumomomomomo"},"content":" MonthsPaid monthsPaid \u003d new MonthsPaid(\"2024-01 2024-02\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"waihin26"},"content":" Person person \u003d new Person(name, phone, email, address, fees, classId, monthsPaid, tagList);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"waihin26":4,"sumomomomomo":4,"-":60}},{"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":"waihin26"},"content":" public static final Prefix PREFIX_CLASSID \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"waihin26"},"content":" public static final Prefix PREFIX_FEES \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"waihin26"},"content":" public static final Prefix PREFIX_MONTHSPAID \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"waihin26":6,"-":15}},{"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":"hooyushing"},"content":"import seedu.address.model.person.ClassIdContainsKeywordsPredicate;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","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 FindCommand 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 FindCommandParser implements Parser\u003cFindCommand\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 FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"hooyushing"},"content":" * and returns a FindCommand object for execution, n/ input finds for name, c/ input finds","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"hooyushing"},"content":" * for classId","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"hooyushing"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","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":"hooyushing"},"content":" if (trimmedArgs.contains(\"n/\")) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"hooyushing"},"content":" String[] nameKeywords \u003d parseName(trimmedArgs);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":" String[] classIdKeywords \u003d parseClassId(trimmedArgs);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" return new FindCommand(new ClassIdContainsKeywordsPredicate(Arrays.asList(classIdKeywords)));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"hooyushing"},"content":" private String[] parseName(String args) throws ParseException {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"hooyushing"},"content":" String[] names \u003d args.split(\"n/\", 2);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"hooyushing"},"content":" if (names.length \u003c 2 || names[1].trim().isEmpty()) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"hooyushing"},"content":" throw new ParseException(","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"hooyushing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"hooyushing"},"content":" return names[1].trim().split(\"\\\\s+\");","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"hooyushing"},"content":" private String[] parseClassId(String args) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"hooyushing"},"content":" String[] classIds \u003d args.split(\"c/\", 2);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"hooyushing"},"content":" if (classIds.length \u003c 2 || classIds[1].trim().isEmpty()) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"hooyushing"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"hooyushing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"hooyushing"},"content":" return classIds[1].trim().split(\"\\\\s+\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"hooyushing":38,"-":32}},{"path":"src/main/java/seedu/address/model/person/ClassId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"waihin26"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"sumomomomomo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"sumomomomomo"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"waihin26"},"content":"/**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"sumomomomomo"},"content":" * Represents a Person\u0027s fees in the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"waihin26"},"content":"public class ClassId {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"sumomomomomo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"sumomomomomo"},"content":" \"ClassId should only contain numbers, and it should be at least 1 digit long.\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"sumomomomomo"},"content":" /*","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"sumomomomomo"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"sumomomomomo"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"sumomomomomo"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{1,}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"sumomomomomo"},"content":" public final String value;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"waihin26"},"content":" /**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"sumomomomomo"},"content":" * Constructs a {@code Fees}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"sumomomomomo"},"content":" public ClassId(String classId) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"sumomomomomo"},"content":" requireNonNull(classId);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"sumomomomomo"},"content":" checkArgument(isValidClassId(classId), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"sumomomomomo"},"content":" value \u003d classId;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" * Returns true if a given string is a valid classId.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"sumomomomomo"},"content":" public static boolean isValidClassId(String test) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"sumomomomomo"},"content":" return test.isEmpty() || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"waihin26"},"content":" public String toString() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"sumomomomomo"},"content":" return value;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"waihin26"},"content":" return true;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"waihin26"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sumomomomomo"},"content":" if (!(other instanceof ClassId)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"waihin26"},"content":" return false;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"sumomomomomo"},"content":" ClassId otherClassId \u003d (ClassId) other;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"sumomomomomo"},"content":" return value.equals(otherClassId.value);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"waihin26"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"sumomomomomo"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"waihin26"},"content":"}","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"waihin26":33,"sumomomomomo":28}},{"path":"src/main/java/seedu/address/model/person/ClassIdContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hooyushing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"hooyushing"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"hooyushing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"hooyushing"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"hooyushing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"hooyushing"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"hooyushing"},"content":" * Tests that a {@code Person}\u0027s {@code ClassId} matches any of the keywords given.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"hooyushing"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"hooyushing"},"content":"public class ClassIdContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"hooyushing"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"hooyushing"},"content":" public ClassIdContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"hooyushing"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"hooyushing"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"hooyushing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"hooyushing"},"content":" return keywords.stream()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"hooyushing"},"content":" .anyMatch(keyword -\u003e regexMatch(person.getClassId().value , keyword));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"hooyushing"},"content":" private boolean regexMatch(String name, String keyword) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"hooyushing"},"content":" Pattern pattern \u003d Pattern.compile(keyword, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"hooyushing"},"content":" return pattern.matcher(name).find();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"hooyushing"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"hooyushing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"hooyushing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"hooyushing"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":" if (!(other instanceof ClassIdContainsKeywordsPredicate)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"hooyushing"},"content":" ClassIdContainsKeywordsPredicate otherClassIdContainsKeywordsPredicate \u003d (ClassIdContainsKeywordsPredicate)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"hooyushing"},"content":" other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"hooyushing"},"content":" return keywords.equals(otherClassIdContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"hooyushing"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"hooyushing"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"hooyushing"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"hooyushing"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"hooyushing":51}},{"path":"src/main/java/seedu/address/model/person/Fees.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"waihin26"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"sumomomomomo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"waihin26"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"waihin26"},"content":"/**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"waihin26"},"content":" * Represents a Person\u0027s fees in the address book.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"waihin26"},"content":"public class Fees {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"sumomomomomo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"sumomomomomo"},"content":" \"Fees should be a positive integer, only contain numbers, and should be at least 1 digit long.\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"waihin26"},"content":" /*","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"waihin26"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"waihin26"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"sumomomomomo"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\d{1,}$\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"sumomomomomo"},"content":" public final String value;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"waihin26"},"content":" /**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"waihin26"},"content":" * Constructs a {@code Fees}.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"sumomomomomo"},"content":" public Fees(String fees) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"sumomomomomo"},"content":" requireNonNull(fees);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"sumomomomomo"},"content":" checkArgument(isValidFees(fees), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"waihin26"},"content":" value \u003d fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"waihin26"},"content":" /**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" * Returns true if a given string is a valid fees.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"sumomomomomo"},"content":" public static boolean isValidFees(String test) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"sumomomomomo"},"content":" return test.isEmpty() || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"waihin26"},"content":" public String toString() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"sumomomomomo"},"content":" return value;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"waihin26"},"content":" return true;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"waihin26"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sumomomomomo"},"content":" if (!(other instanceof ClassId)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"waihin26"},"content":" return false;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"sumomomomomo"},"content":" ClassId otherClassId \u003d (ClassId) other;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"sumomomomomo"},"content":" return value.equals(otherClassId.value);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"waihin26"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"sumomomomomo"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"waihin26"},"content":"}","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"waihin26":44,"sumomomomomo":17}},{"path":"src/main/java/seedu/address/model/person/MonthsPaid.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"waihin26"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"waihin26"},"content":"import java.util.Objects;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"waihin26"},"content":"/**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"waihin26"},"content":" * Represents a Person\u0027s months paid in the address book.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"waihin26"},"content":"public class MonthsPaid {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"sumomomomomo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"MonthsPaid should take a string with the pattern\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"sumomomomomo"},"content":" + \" YYYY-MM, where one or of such patterns can be included if separated by a space.\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"sumomomomomo"},"content":" public static final String SPLIT_VALIDATION_REGEX \u003d \"^[0-9]{4}-[0-9]{2}$\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"waihin26"},"content":" public final String value;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"waihin26"},"content":" public MonthsPaid(String monthsPaid) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"waihin26"},"content":" this.value \u003d monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"waihin26"},"content":" public String toString() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"waihin26"},"content":" return value;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"sumomomomomo"},"content":" * Returns true if a given string is a valid monthsPaid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"waihin26"},"content":" public static boolean isValidMonthsPaid(String monthsPaid) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"sumomomomomo"},"content":" if (monthsPaid.isEmpty()) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"sumomomomomo"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"sumomomomomo"},"content":" for (String i : monthsPaid.split(\" \")) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" if (!i.matches(SPLIT_VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"sumomomomomo"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"sumomomomomo"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"waihin26"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"waihin26"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"waihin26"},"content":" return true;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"kienvumrpm"},"content":" if (!(other instanceof MonthsPaid otherMonthsPaid)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"waihin26"},"content":" return false;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"kienvumrpm"},"content":" return Objects.equals(value, otherMonthsPaid.value);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"waihin26"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"waihin26"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"waihin26"},"content":"}","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"waihin26":39,"sumomomomomo":15,"kienvumrpm":2}},{"path":"src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java","fileType":"functional-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 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":"hooyushing"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","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":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10","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":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"hooyushing"},"content":" .anyMatch(keyword -\u003e regexMatch(person.getName().fullName, keyword));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"hooyushing"},"content":" private boolean regexMatch(String name, String keyword) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"hooyushing"},"content":" Pattern pattern \u003d Pattern.compile(keyword, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"hooyushing"},"content":" return pattern.matcher(name).find();","lastModifiedDate":"2024-09-27","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":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return false;","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":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"hooyushing":7,"-":42}},{"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":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"waihin26"},"content":" private final Fees fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"waihin26"},"content":" private final ClassId classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"waihin26"},"content":" private final MonthsPaid monthsPaid;","lastModifiedDate":"2024-09-27","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":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"waihin26"},"content":" public Person(Name name, Phone phone, Email email, Address address, Fees fees, ClassId classId,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" MonthsPaid monthsPaid, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":" requireAllNonNull(name, phone, email, address, fees, classId, monthsPaid, tags);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" this.fees \u003d fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":" this.classId \u003d classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" this.monthsPaid \u003d monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","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":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","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 Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return phone;","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":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","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":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"waihin26"},"content":" public Fees getFees() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"waihin26"},"content":" return fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"waihin26"},"content":" public ClassId getClassId() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"waihin26"},"content":" return classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"waihin26"},"content":" public MonthsPaid getMonthsPaid() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"waihin26"},"content":" return monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","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 name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * This defines a weaker 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":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","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":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"waihin26":24,"-":113}},{"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":"waihin26"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Fees(\"200\"), new ClassId(\"1\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-01\"), getTagSet(\"friends\")),","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Fees(\"300\"), new ClassId(\"2\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-02\"), getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2024-09-27","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":"sumomomomomo"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Fees(\"400\"), new ClassId(\"3\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-03\"), getTagSet(\"neighbours\")),","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Fees(\"250\"), new ClassId(\"1\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-01\"), getTagSet(\"family\")),","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Fees(\"350\"), new ClassId(\"2\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-02\"), getTagSet(\"classmates\")),","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Fees(\"500\"), new ClassId(\"3\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"sumomomomomo"},"content":" new MonthsPaid(\"2024-12\"), getTagSet(\"colleagues\")),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"sumomomomomo"},"content":" new Person(new Name(\"Roger Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Fees(\"500\"), new ClassId(\"3\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"sumomomomomo"},"content":" new MonthsPaid(\"2024-12\"), getTagSet(\"colleagues\")),","lastModifiedDate":"2024-10-02","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":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"waihin26":8,"sumomomomomo":10,"-":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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","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":"sumomomomomo"},"content":" private final String fees;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"sumomomomomo"},"content":" private final String classId;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" private final String monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","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":"sumomomomomo"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"fees\") String fees,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"classId\") String classId,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"waihin26"},"content":" @JsonProperty(\"monthsPaid\") String monthsPaid,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"sumomomomomo"},"content":" // TODO - confirm if this is the implementation that we want","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"sumomomomomo"},"content":" this.fees \u003d fees !\u003d null ? fees : \"\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"sumomomomomo"},"content":" this.classId \u003d classId !\u003d null ? classId : \"\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"sumomomomomo"},"content":" this.monthsPaid \u003d monthsPaid !\u003d null ? monthsPaid : \"\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","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":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"waihin26"},"content":" fees \u003d source.getFees().value;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"waihin26"},"content":" classId \u003d source.getClassId().value;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"waihin26"},"content":" monthsPaid \u003d source.getMonthsPaid().toString();","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","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":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","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":"sumomomomomo"},"content":" // Check name","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.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 (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.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 Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"sumomomomomo"},"content":" // Check phone","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.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 (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.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 Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"sumomomomomo"},"content":" // Check email","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"sumomomomomo"},"content":" // Check address","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"sumomomomomo"},"content":" // Check fees","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"waihin26"},"content":" if (!Fees.isValidFees(fees)) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"sumomomomomo"},"content":" throw new IllegalValueException(Fees.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"waihin26"},"content":" final Fees modelFees \u003d new Fees(fees);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"sumomomomomo"},"content":" // Check classId","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"sumomomomomo"},"content":" if (!ClassId.isValidClassId(classId)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"waihin26"},"content":" throw new IllegalValueException(ClassId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"waihin26"},"content":" final ClassId modelClassId \u003d new ClassId(classId);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"sumomomomomo"},"content":" // Check monthsPaid","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"sumomomomomo"},"content":" if (!MonthsPaid.isValidMonthsPaid(monthsPaid)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"waihin26"},"content":" throw new IllegalValueException(MonthsPaid.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"waihin26"},"content":" final MonthsPaid modelmonthsPaid \u003d new MonthsPaid(monthsPaid);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"sumomomomomo"},"content":" // Create tags","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"waihin26"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelFees, modelClassId, modelmonthsPaid,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"waihin26"},"content":" modelTags);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"waihin26":23,"sumomomomomo":26,"-":106}},{"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":"sumomomomomo"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-02","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":"waihin26"},"content":" @FXML","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" private Label fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":" @FXML","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" private Label classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"waihin26"},"content":" @FXML","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"waihin26"},"content":" private Label monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"waihin26"},"content":" fees.setText(String.valueOf(person.getFees().value));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"waihin26"},"content":" classId.setText(String.valueOf(person.getClassId().value));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"waihin26"},"content":" monthsPaid.setText(String.valueOf(person.getMonthsPaid().value));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"waihin26":12,"sumomomomomo":1,"-":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\"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":"waihin26"},"content":" \u003cLabel fx:id\u003d\"fees\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$fees\" /\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"waihin26"},"content":" \u003cLabel fx:id\u003d\"classId\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$classId\" /\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" \u003cLabel fx:id\u003d\"monthsPaid\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$monthsPaid\" /\u003e","lastModifiedDate":"2024-09-27","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":{"waihin26":3,"-":36}},{"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":"hooyushing"},"content":"import seedu.address.model.person.ClassIdContainsKeywordsPredicate;","lastModifiedDate":"2024-10-03","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":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":" ClassIdContainsKeywordsPredicate thirdPredicate \u003d new ClassIdContainsKeywordsPredicate(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":" Collections.singletonList(\"third\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" ClassIdContainsKeywordsPredicate fourthPredicate \u003d new ClassIdContainsKeywordsPredicate(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":" Collections.singletonList(\"fourth\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"hooyushing"},"content":" FindCommand findThirdCommand \u003d new FindCommand(thirdPredicate);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"hooyushing"},"content":" FindCommand findFourthCommand \u003d new FindCommand(fourthPredicate);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"hooyushing"},"content":" assertTrue(findThirdCommand.equals(findThirdCommand));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"hooyushing"},"content":" FindCommand findThirdCommandCopy \u003d new FindCommand(thirdPredicate);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"hooyushing"},"content":" assertTrue(findThirdCommand.equals(findThirdCommandCopy));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"hooyushing"},"content":" assertFalse(findThirdCommand.equals(findFirstCommand));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"hooyushing"},"content":" assertFalse(findThirdCommand.equals(findFourthCommand));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","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-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","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":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"hooyushing"},"content":" ClassIdContainsKeywordsPredicate classIdPredicate \u003d new ClassIdContainsKeywordsPredicate(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"hooyushing"},"content":" Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"hooyushing"},"content":" FindCommand findCommandClassId \u003d new FindCommand(classIdPredicate);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"hooyushing"},"content":" String expectedClassId \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + classIdPredicate + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"hooyushing"},"content":" assertEquals(expectedClassId, findCommandClassId.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"hooyushing":22,"-":91}},{"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.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":"hooyushing"},"content":" FindCommand.COMMAND_WORD + \" n/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-09-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":"-"},"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":{"hooyushing":1,"-":100}},{"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":"hooyushing"},"content":"import seedu.address.model.person.ClassIdContainsKeywordsPredicate;","lastModifiedDate":"2024-10-03","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":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"hooyushing"},"content":" assertParseSuccess(parser, \"n/Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"hooyushing"},"content":" assertParseSuccess(parser, \"n/ \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-09-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},{"lineNumber":36,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":" public void parse_invalidArgsWithName_throwsParseException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" // missing keywords after n/","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":" assertParseFailure(parser, \"n/\",","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"hooyushing"},"content":" // missing both prefixes","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"hooyushing"},"content":" assertParseFailure(parser, \"Alice Bob\",","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"hooyushing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"hooyushing"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"hooyushing"},"content":" public void parse_validArgsWithClassId_returnsFindCommand() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"hooyushing"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"hooyushing"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"hooyushing"},"content":" new FindCommand(new ClassIdContainsKeywordsPredicate(Arrays.asList(\"1\", \"2\")));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"hooyushing"},"content":" assertParseSuccess(parser, \"c/1 2\", expectedFindCommand);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"hooyushing"},"content":" assertParseSuccess(parser, \"c/ \\n 1 \\n \\t 2 \\t\", expectedFindCommand);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"hooyushing":26,"-":35}},{"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":"sumomomomomo"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-10-02","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":"sumomomomomo"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"sumomomomomo"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"sumomomomomo"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","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":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"sumomomomomo"},"content":" private static final String INVALID_CLASS_ID \u003d \"-1\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" private static final String INVALID_FEES \u003d \"-300\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"sumomomomomo"},"content":" private static final String INVALID_MONTHS_PAID \u003d \"123\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"sumomomomomo"},"content":" private static final String VALID_CLASS_ID \u003d BENSON.getClassId().toString();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"sumomomomomo"},"content":" private static final String VALID_FEES \u003d BENSON.getFees().toString();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"sumomomomomo"},"content":" private static final String VALID_MONTHS_PAID \u003d BENSON.getMonthsPaid().toString();","lastModifiedDate":"2024-10-02","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":"-"},"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":"-"},"content":" public void toModelType_invalidName_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":"sumomomomomo"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","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":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","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":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","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_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"waihin26"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"sumomomomomo"},"content":" VALID_CLASS_ID, VALID_MONTHS_PAID, invalidTags);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_nullFees_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"sumomomomomo"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"sumomomomomo"},"content":" assert person.toModelType().getFees().value.isEmpty();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"sumomomomomo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"sumomomomomo"},"content":" fail();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_invalidFees_throwsIllegalValueException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"sumomomomomo"},"content":" String expectedMessage \u003d Fees.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"sumomomomomo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_nullClassId_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, null,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"sumomomomomo"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"sumomomomomo"},"content":" assert person.toModelType().getClassId().value.isEmpty();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"sumomomomomo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"sumomomomomo"},"content":" fail();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_invalidClassId_throwsIllegalValueException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, INVALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"sumomomomomo"},"content":" String expectedMessage \u003d ClassId.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"sumomomomomo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_nullMonthsPaid_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"sumomomomomo"},"content":" null, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"sumomomomomo"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"sumomomomomo"},"content":" assert person.toModelType().getMonthsPaid().value.isEmpty();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"sumomomomomo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"sumomomomomo"},"content":" fail();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_invalidMonthsPaid_throwsIllegalValueException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"sumomomomomo"},"content":" INVALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"sumomomomomo"},"content":" String expectedMessage \u003d MonthsPaid.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"sumomomomomo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"waihin26":1,"sumomomomomo":94,"-":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":"waihin26"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","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":"sumomomomomo"},"content":" public static final String DEFAULT_FEES \u003d \"564\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"sumomomomomo"},"content":" public static final String DEFAULT_CLASS_ID \u003d \"1\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"sumomomomomo"},"content":" public static final String DEFAULT_MONTHS_PAID \u003d \"2024-01 2024-02\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"waihin26"},"content":" private Fees fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"waihin26"},"content":" private ClassId classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" private MonthsPaid monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"sumomomomomo"},"content":" fees \u003d new Fees(DEFAULT_FEES);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"sumomomomomo"},"content":" classId \u003d new ClassId(DEFAULT_CLASS_ID);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sumomomomomo"},"content":" monthsPaid \u003d new MonthsPaid(DEFAULT_MONTHS_PAID);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"sumomomomomo"},"content":" fees \u003d personToCopy.getFees();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"sumomomomomo"},"content":" classId \u003d personToCopy.getClassId();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"sumomomomomo"},"content":" monthsPaid \u003d personToCopy.getMonthsPaid();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","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":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","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":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"sumomomomomo"},"content":" * Sets the {@code Fees} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"sumomomomomo"},"content":" public PersonBuilder withFees(String fees) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"sumomomomomo"},"content":" this.fees \u003d new Fees(fees);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"sumomomomomo"},"content":" return this;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"sumomomomomo"},"content":" * Sets the {@code ClassId} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"sumomomomomo"},"content":" public PersonBuilder withClassId(String classId) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"sumomomomomo"},"content":" this.classId \u003d new ClassId(classId);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"sumomomomomo"},"content":" return this;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"sumomomomomo"},"content":" * Sets the {@code MonthsPaid} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"sumomomomomo"},"content":" public PersonBuilder withMonthsPaid(String monthsPaid) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"sumomomomomo"},"content":" this.monthsPaid \u003d new MonthsPaid(monthsPaid);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"sumomomomomo"},"content":" return this;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"sumomomomomo"},"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-02","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"sumomomomomo"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"sumomomomomo"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"sumomomomomo"},"content":" return this;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"waihin26"},"content":" return new Person(name, phone, email, address, fees, classId, monthsPaid, tags);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"waihin26":7,"sumomomomomo":41,"-":87}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T15-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-T15-2/tp/actions)","lastModifiedDate":"2024-09-15","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":"hooyushing"},"content":"## EduTuTu - Address Book to manage students\u0027 information :man_student:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"hooyushing"},"content":"* EduTuTu is a desktop application for managing contacts.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"hooyushing"},"content":"* EduTuTu aims to help tuition centers that need organized and efficient communication between **teachers, students, and parents**.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"hooyushing"},"content":"* EduTuTu is customized for tuition centres to manage their students\u0027 information.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"hooyushing"},"content":"* EduTuTu is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"hooyushing"},"content":"* Whether you’re updating parents about class schedules, sharing student progress reports, or coordinating with teachers, this tool simplifies the process, ensuring nothing falls through the cracks.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"hooyushing"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"hooyushing":9,"-":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: 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":"-"},"content":"### Hoo Yu Shing","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/hooyushing.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[github](https://github.com/hooyushing)]","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"hooyushing"},"content":"[[portfolio](https://www.linkedin.com/in/hoo-yu-shing-252a08238/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"sumomomomomo"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"sumomomomomo"},"content":"* Responsibilities: Responsible for overall project coordination.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"### Wong Wai Hin","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"waihin26"},"content":"\u003cimg src\u003d\"images/waihin26.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"waihin26"},"content":"[[github](http://github.com/waihin26)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"waihin26"},"content":"[[portfolio](https://www.linkedin.com/in/wai-hin-wong-6875ab110/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"waihin26"},"content":"* Role: Deliverables and Deadline","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"waihin26"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Matthew Ho","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"sumomomomomo"},"content":"\u003cimg src\u003d\"images/sumomomomomo.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"sumomomomomo"},"content":"[[github](http://github.com/sumomomomomo)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"sumomomomomo"},"content":"[[portfolio](https://www.linkedin.com/in/matthew-ho-803a41192/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"sumomomomomo"},"content":"* Role: Code Quality","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"sumomomomomo"},"content":"* Responsibilities: Looks after code quality; ensures adherence to coding standards.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"hooyushing"},"content":"### Munhui Kim","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"munhuikim"},"content":"\u003cimg src\u003d\"images/munhuikim.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"munhuikim"},"content":"[[github](http://github.com/munhuikim)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"munhuikim"},"content":"[[portfolio](https://www.linkedin.com/in/munhui-kim/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"sumomomomomo"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"munhuikim"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Vu Hoang Kien","lastModifiedDate":"2024-09-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"kienvumrpm"},"content":"\u003cimg src\u003d\"images/kienvumrpm.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"kienvumrpm"},"content":"[[github](http://github.com/kienvumrpm)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"kienvumrpm"},"content":"[[portfolio](https://www.linkedin.com/in/kienvu2211/)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"kienvumrpm"},"content":"* Role: Implementor","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"sumomomomomo"},"content":"* Responsibilities: Help others to debug.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"waihin26":5,"hooyushing":2,"sumomomomomo":9,"-":37,"munhuikim":4,"kienvumrpm":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: 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":"sumomomomomo"},"content":"**Target user profile**: Tuition center administrative staff","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"sumomomomomo"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2024-09-30","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":"sumomomomomo"},"content":"**Value proposition**: ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"sumomomomomo"},"content":"* manage student contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"sumomomomomo"},"content":"* one-shot command focus for significantly quicker usage","lastModifiedDate":"2024-09-30","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":"munhuikim"},"content":"|----------|--------------------------------------|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | keep different levels of access for contact information | keep sensitive information not accessible to unauthorized users |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | search for contacts based on multiple criteria (name, role, or ID) | can find a specific person quickly without manually scrolling the list |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | a user-friendly command-line interface with clear and concise command options | quickly perform tasks without a usage guide |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | manage, retrieve and update the contact information for teachers, students and parents | smoothly communicate across all parties without any confusions or delays |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | able to perform mutliple actions at once | increase the productivity |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"munhuikim"},"content":"| `* * *` | Tuition Center Administrators | add note about individual students (e.g. learning preferences, special needs, etc) | can personalise learning experience |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"munhuikim"},"content":"| `* *` | Tuition Center Administrators | send automated payment notifications to parents | can ensure timely payments |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"munhuikim"},"content":"| `* *` | Tuition Center Administrators | integrate a billing system that automatically calculates monthly fees and generate invoices | can reduce workload |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"munhuikim"},"content":"| `* *` | Tuition Center Administrators | log and track communication history with parents, teachers and students | ensure continuity in communication |","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"waihin26"},"content":"### System: EduTuTu","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC01: Add Student**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"waihin26"},"content":"1. Administrator types the command to add a new student with the required details in a single line.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"waihin26"},"content":"2. EduTuTu validates the input details.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"waihin26"},"content":"3. EduTuTu adds the new student to the system and logs the action.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"waihin26"},"content":"**Extensions**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"waihin26"},"content":"- **2a. Invalid or Missing Data**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"waihin26"},"content":" - 2a1. EduTuTu logs an error message specifying the invalid fields.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"waihin26"},"content":" - Use case resumes from step 1.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"waihin26"},"content":"- **2b. Duplicate Student Detected**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"waihin26"},"content":" - 2b1. EduTuTu logs an error message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"waihin26"},"content":" - Use case resumes from step 1.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC02: Delete Student**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"waihin26"},"content":"1. Administrator types the command to delete a student using their unique index:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"waihin26"},"content":"2. EduTuTu validates the index.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"waihin26"},"content":"3. EduTuTu deletes the student and logs the details of the deleted student.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"waihin26"},"content":"**Extensions**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"waihin26"},"content":"- **2a. Invalid Index Entered**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"waihin26"},"content":" - 2a1. EduTuTu logs an error message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"waihin26"},"content":" - **Use case resumes from step 1.**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC03: List All Students**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"waihin26"},"content":"1. Administrator types the command to list all students.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"waihin26"},"content":"2. EduTuTu retrieves all student records and outputs the list in the terminal with unique indices.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC04: Find Students**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"waihin26"},"content":"1. Administrator types the command to search for students by name or class ID.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"waihin26"},"content":"2. EduTuTu validates the search criteria.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"waihin26"},"content":"3. EduTuTu searches the system and outputs matching students with unique indices.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"waihin26"},"content":"**Extensions**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"waihin26"},"content":"- **2a. Invalid Search Criteria**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"waihin26"},"content":" - 2a1.EduTuTu logs an error message specifying the invalid input.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"waihin26"},"content":" - **Use case resumes from step 1.**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"waihin26"},"content":"#### **Use Case UC05: Mark Fees as Paid**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"waihin26"},"content":"**Actor**: Administrator","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"waihin26"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"waihin26"},"content":"1. Administrator first searches for the student using the find command.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"waihin26"},"content":"2. EduTuTu displays a list of students with unique indices.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"waihin26"},"content":"3. Administrator types the command to mark a student\u0027s fees as paid, including the student index and date:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"waihin26"},"content":"4. EduTuTu validates the student index and date format.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"waihin26"},"content":"5. EduTuTu updates the student\u0027s record and logs the payment confirmation.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"waihin26"},"content":"Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"waihin26"},"content":"**Extensions**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"waihin26"},"content":"- **3a. Invalid Index Entered**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"waihin26"},"content":" - 3a1. EduTuTu logs an error message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"waihin26"},"content":" - **Use case resumes from step 1.**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"waihin26"},"content":"- **3b. Invalid Date Format or Month**:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"waihin26"},"content":" - 3b1. EduTuTu logs an error message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"waihin26"},"content":" - **Use case resumes from step 1.**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"waihin26"},"content":"**1. Performance Requirements**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"waihin26"},"content":"- **Response Time**: The system should respond to any command within **1 second** under normal operating conditions.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"waihin26"},"content":"- **Throughput**: Capable of processing **concurrent commands** from multiple administrators without significant delay.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"waihin26"},"content":"- **Capacity**: Should handle up to **1,000 students** without noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"waihin26"},"content":"**2. Maintainability Requirements**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"waihin26"},"content":"- **Code Quality**: The codebase should be **modular**, well-documented, and adhere to standard coding conventions to facilitate maintenance.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"waihin26"},"content":"- **Documentation**: Provide **comprehensive technical documentation** for future developers and maintainers.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"waihin26"},"content":"- **Automated Testing**: Implement **unit tests** and **integration tests** to ensure that new changes do not break existing functionality.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"waihin26"},"content":"**3. Portability Requirements**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"waihin26"},"content":"- **Cross-Platform Compatibility**: The application must run on any mainstream operating system (**Windows, macOS, Linux**) with **Java 17** or above installed.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"waihin26"},"content":"- **Minimal Dependencies**: Avoid platform-specific dependencies to ensure **ease of deployment** across different environments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"waihin26"},"content":"**4. Ethical Requirements**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"waihin26"},"content":"- **Non-Discrimination**: The system should be designed to avoid biases, especially in features like **sorting** or **filtering**.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"waihin26"},"content":"- **Transparency**: Actions performed by the system should be **transparent** to users, avoiding hidden processes that could cause confusion.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"waihin26"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"waihin26"},"content":"This version uses clear formatting with bullet points for better readability and structure.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":429,"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":430,"author":{"gitId":"munhuikim"},"content":"* **Tuition Center Administrator**: The person responsible for overseeing the operations of the tuition center, managing contacts, scheduling, and communication with students, parents, and teachers.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"munhuikim"},"content":"* **Data Migration**: The process of transferring data from one system to another. This feature ensures that contacts, communication history, and other data can be shared across different platforms or stakeholders.","lastModifiedDate":"2024-09-27","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":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"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":440,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"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":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"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":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","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 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"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":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"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":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"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":474,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","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":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"waihin26":114,"sumomomomomo":6,"-":352,"munhuikim":12}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"hooyushing"},"content":"title: \"EduTuTu\"","lastModifiedDate":"2024-09-27","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":"hooyushing"},"content":"repository: \"AY2425S1-CS2103T-T15-2/tp\"","lastModifiedDate":"2024-09-27","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":{"hooyushing":2,"-":13}},{"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":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSID;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEES;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","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":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","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_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","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":"munhuikim"},"content":" + PREFIX_FEES + \"FEES \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"munhuikim"},"content":" + PREFIX_CLASSID + \"CLASSID \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","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":"munhuikim"},"content":" + PREFIX_FEES + \"250 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"munhuikim"},"content":" + PREFIX_CLASSID + \"1 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"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":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":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","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":" @Override","lastModifiedDate":"2016-08-24","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":"2017-05-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","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":{"-":83,"munhuikim":8}},{"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":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSID;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEES;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONTHSPAID;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","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.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","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":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","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":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","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":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"munhuikim"},"content":" + \"[\" + PREFIX_FEES + \"FEES] \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"munhuikim"},"content":" + \"[\" + PREFIX_CLASSID + \"CLASSID] \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"munhuikim"},"content":" + \"[\" + PREFIX_MONTHSPAID + \"MONTHSPAID] \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"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":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","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":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","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":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"sumomomomomo"},"content":" Fees updatedFees \u003d personToEdit.getFees();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"sumomomomomo"},"content":" ClassId updatedClassId \u003d personToEdit.getClassId();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"sumomomomomo"},"content":" MonthsPaid updatedMonthsPaid \u003d personToEdit.getMonthsPaid();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"waihin26"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedFees, updatedClassId,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"waihin26"},"content":" updatedMonthsPaid, updatedTags);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"waihin26"},"content":" return \"seedu.address.logic.commands.EditCommand{\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"waihin26"},"content":" + \"index\u003d\" + index","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"waihin26"},"content":" + \", editPersonDescriptor\u003d\" + editPersonDescriptor","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"waihin26"},"content":" + \u0027}\u0027;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"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":144,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"munhuikim"},"content":" private Fees fees;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"munhuikim"},"content":" private ClassId classId;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"munhuikim"},"content":" setFees(toCopy.fees);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"munhuikim"},"content":" setClassId(toCopy.classId);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","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":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"munhuikim"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, fees, classId, tags);","lastModifiedDate":"2024-10-10","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 void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.name \u003d 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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.phone \u003d 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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.email \u003d 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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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 void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.address \u003d 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":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"munhuikim"},"content":" public void setFees(Fees fees) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"munhuikim"},"content":" this.fees \u003d fees;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"munhuikim"},"content":" public Optional\u003cFees\u003e getFees() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"munhuikim"},"content":" return Optional.ofNullable(fees);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"munhuikim"},"content":" public void setClassId(ClassId classId) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"munhuikim"},"content":" this.classId \u003d classId;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"munhuikim"},"content":" public Optional\u003cClassId\u003e getClassId() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"munhuikim"},"content":" return Optional.ofNullable(classId);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","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":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"munhuikim"},"content":" \u0026\u0026 Objects.equals(fees, otherEditPersonDescriptor.fees)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"munhuikim"},"content":" \u0026\u0026 Objects.equals(classId, otherEditPersonDescriptor.classId)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","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":"waihin26"},"content":" return \"seedu.address.logic.commands.EditCommand.EditPersonDescriptor{\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"waihin26"},"content":" + \"name\u003d\" + name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"waihin26"},"content":" + \", phone\u003d\" + phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"waihin26"},"content":" + \", email\u003d\" + email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"waihin26"},"content":" + \", address\u003d\" + address","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"waihin26"},"content":" + \", fees\u003d\" + fees","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"waihin26"},"content":" + \", classId\u003d\" + classId","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"waihin26"},"content":" + \", tags\u003d\" + tags","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"waihin26"},"content":" + \u0027}\u0027;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"waihin26":18,"sumomomomomo":3,"-":227,"munhuikim":32}},{"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":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"hooyushing"},"content":"import seedu.address.model.person.ClassIdContainsKeywordsPredicate;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","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 COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"hooyushing"},"content":" + \"Example: \" + COMMAND_WORD + \" n/alice bob charlie\";","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"hooyushing"},"content":" private final ClassIdContainsKeywordsPredicate predicateClassId;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"hooyushing"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"hooyushing"},"content":" * Stores the predicate to be used to filter the list of persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"hooyushing"},"content":" * @param predicate the predicate to be used to filter the list of persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"hooyushing"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"hooyushing"},"content":" this.predicateClassId \u003d null;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":" * Stores the predicate to be used to filter the list of persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":" * @param predicate the predicate to be used to filter the list of persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"hooyushing"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"hooyushing"},"content":" public FindCommand(ClassIdContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"hooyushing"},"content":" this.predicateClassId \u003d predicate;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"hooyushing"},"content":" this.predicate \u003d null;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"hooyushing"},"content":" if (predicate !\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"hooyushing"},"content":" } else if (predicateClassId !\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"hooyushing"},"content":" model.updateFilteredPersonList(predicateClassId);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","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":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"hooyushing"},"content":" return (predicate !\u003d null ? predicate.equals(otherFindCommand.predicate)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"hooyushing"},"content":" : predicateClassId.equals(otherFindCommand.predicateClassId));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","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":"hooyushing"},"content":" if (predicate !\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"hooyushing"},"content":" } else {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"hooyushing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"hooyushing"},"content":" .add(\"predicate\", predicateClassId)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"hooyushing"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"hooyushing":37,"-":56}},{"path":"src/main/java/seedu/address/logic/commands/MarkpaidCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kienvumrpm"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"kienvumrpm"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"kienvumrpm"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"kienvumrpm"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"kienvumrpm"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"kienvumrpm"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"kienvumrpm"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"sumomomomomo"},"content":" * Marks an existing person in the address book as paid for a specified month.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"kienvumrpm"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"kienvumrpm"},"content":"public class MarkpaidCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"kienvumrpm"},"content":" public static final String COMMAND_WORD \u003d \"markpaid\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"sumomomomomo"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Marks the months paid for the person identified \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"sumomomomomo"},"content":" + \"Existing months paid of that person will be overwritten by input to this command.\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"sumomomomomo"},"content":" + \"Parameters: INDEX (must be a positive integer) MONTHSPAID... (yyyy-mm format)\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"sumomomomomo"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2024-01 2024-02\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"kienvumrpm"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"kienvumrpm"},"content":" private final Index index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"kienvumrpm"},"content":" private final String monthPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"kienvumrpm"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"kienvumrpm"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"kienvumrpm"},"content":" * @param monthPaid the month to mark the person as paid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"kienvumrpm"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"kienvumrpm"},"content":" public MarkpaidCommand(Index index, String monthPaid) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"kienvumrpm"},"content":" requireNonNull(index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"kienvumrpm"},"content":" requireNonNull(monthPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"kienvumrpm"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"kienvumrpm"},"content":" this.monthPaid \u003d monthPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"kienvumrpm"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"kienvumrpm"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"kienvumrpm"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"kienvumrpm"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"kienvumrpm"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"kienvumrpm"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"kienvumrpm"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"kienvumrpm"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"kienvumrpm"},"content":" Person personToMark \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"kienvumrpm"},"content":" Person markedPerson \u003d createMarkedPerson(personToMark, monthPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"kienvumrpm"},"content":" model.setPerson(personToMark, markedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"kienvumrpm"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"kienvumrpm"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(markedPerson)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"kienvumrpm"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"kienvumrpm"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"kienvumrpm"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"kienvumrpm"},"content":" * marked with {@code monthPaid}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"kienvumrpm"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"kienvumrpm"},"content":" private static Person createMarkedPerson(Person personToMark, String monthPaid) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"kienvumrpm"},"content":" assert personToMark !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"kienvumrpm"},"content":" Name name \u003d personToMark.getName();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"kienvumrpm"},"content":" Phone phone \u003d personToMark.getPhone();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"kienvumrpm"},"content":" Email email \u003d personToMark.getEmail();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"kienvumrpm"},"content":" Address address \u003d personToMark.getAddress();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"kienvumrpm"},"content":" Fees fees \u003d personToMark.getFees();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"kienvumrpm"},"content":" ClassId classId \u003d personToMark.getClassId();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"kienvumrpm"},"content":" MonthsPaid markedMonthsPaid \u003d new MonthsPaid(personToMark.getMonthsPaid() + \" \" + monthPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"kienvumrpm"},"content":" Set\u003cTag\u003e tags \u003d personToMark.getTags();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"kienvumrpm"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"kienvumrpm"},"content":" return new Person(name, phone, email, address, fees, classId,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"kienvumrpm"},"content":" markedMonthsPaid, tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"kienvumrpm"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"kienvumrpm"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"sumomomomomo":6,"kienvumrpm":83}},{"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":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSID;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEES;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-11","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":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-11","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 input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"sumomomomomo"},"content":" // TODO: fees, classid, monthspaid are set to basic default values by default","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"munhuikim"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"munhuikim"},"content":" PREFIX_FEES, PREFIX_CLASSID, PREFIX_TAG);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"munhuikim"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"munhuikim"},"content":" PREFIX_FEES, PREFIX_CLASSID)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"munhuikim"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"munhuikim"},"content":" PREFIX_FEES, PREFIX_CLASSID);","lastModifiedDate":"2024-10-11","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":"munhuikim"},"content":" //Fees fees \u003d new Fees(\"564\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"munhuikim"},"content":" //ClassId classId \u003d new ClassId(\"1\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"munhuikim"},"content":" Fees fees \u003d ParserUtil.parseFees(argMultimap.getValue(PREFIX_FEES).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"munhuikim"},"content":" ClassId classId \u003d ParserUtil.parseClassId(argMultimap.getValue(PREFIX_CLASSID).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"sumomomomomo"},"content":" MonthsPaid monthsPaid \u003d new MonthsPaid(\"2024-01 2024-02\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"waihin26"},"content":" Person person \u003d new Person(name, phone, email, address, fees, classId, monthsPaid, tagList);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"waihin26":1,"sumomomomomo":2,"-":57,"munhuikim":15}},{"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":"waihin26"},"content":" public static final Prefix PREFIX_CLASSID \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"waihin26"},"content":" public static final Prefix PREFIX_FEES \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"waihin26"},"content":" public static final Prefix PREFIX_MONTHSPAID \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"waihin26":6,"-":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 seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSID;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEES;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-11","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":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"waihin26"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","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":"waihin26"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-12","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":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"munhuikim"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"munhuikim"},"content":" PREFIX_FEES, PREFIX_CLASSID, PREFIX_TAG);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"waihin26"},"content":" if (argMultimap.getPreamble().isEmpty() || !ParserUtil.isValidIndex(argMultimap.getPreamble())) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"waihin26"},"content":" Index index;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"waihin26"},"content":" // Check for duplicate prefixes and throw exception for the first one found","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"waihin26"},"content":" if (hasDuplicate(argMultimap, PREFIX_PHONE)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"waihin26"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"waihin26"},"content":" if (hasDuplicate(argMultimap, PREFIX_EMAIL)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"waihin26"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"waihin26"},"content":" if (hasDuplicate(argMultimap, PREFIX_ADDRESS)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"waihin26"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"munhuikim"},"content":" if (argMultimap.getValue(PREFIX_FEES).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"waihin26"},"content":" editPersonDescriptor.setFees(ParserUtil.parseFees(argMultimap.getValue(PREFIX_FEES).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"munhuikim"},"content":" if (argMultimap.getValue(PREFIX_CLASSID).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"waihin26"},"content":" editPersonDescriptor.setClassId(ParserUtil.parseClassId(argMultimap.getValue(PREFIX_CLASSID).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","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":"waihin26"},"content":" // Helper method to detect duplicate fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"waihin26"},"content":" private boolean hasDuplicate(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"waihin26"},"content":" return argMultimap.getAllValues(prefix).size() \u003e 1;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","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":"waihin26"},"content":" return Optional.empty(); // Return Optional.empty() to set tags to null","lastModifiedDate":"2024-10-12","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":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"waihin26":27,"-":71,"munhuikim":8}},{"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":"hooyushing"},"content":"import seedu.address.model.person.ClassIdContainsKeywordsPredicate;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","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 FindCommand 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 FindCommandParser implements Parser\u003cFindCommand\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 FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"hooyushing"},"content":" * and returns a FindCommand object for execution, n/ input finds for name, c/ input finds","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"hooyushing"},"content":" * for classId","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"hooyushing"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","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":"hooyushing"},"content":" if (trimmedArgs.contains(\"n/\")) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"hooyushing"},"content":" String[] nameKeywords \u003d parseName(trimmedArgs);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":" String[] classIdKeywords \u003d parseClassId(trimmedArgs);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" return new FindCommand(new ClassIdContainsKeywordsPredicate(Arrays.asList(classIdKeywords)));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"hooyushing"},"content":" private String[] parseName(String args) throws ParseException {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"hooyushing"},"content":" String[] names \u003d args.split(\"n/\", 2);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"hooyushing"},"content":" if (names.length \u003c 2 || names[1].trim().isEmpty()) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"hooyushing"},"content":" throw new ParseException(","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"hooyushing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"hooyushing"},"content":" return names[1].trim().split(\"\\\\s+\");","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"hooyushing"},"content":" private String[] parseClassId(String args) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"hooyushing"},"content":" String[] classIds \u003d args.split(\"c/\", 2);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"hooyushing"},"content":" if (classIds.length \u003c 2 || classIds[1].trim().isEmpty()) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"hooyushing"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"hooyushing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"hooyushing"},"content":" return classIds[1].trim().split(\"\\\\s+\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"hooyushing":38,"-":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":"2024-10-11","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":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-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":"munhuikim"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"munhuikim"},"content":" * Parses a {@code String fees} into a {@code Fees}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"munhuikim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"munhuikim"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"munhuikim"},"content":" * @throws ParseException if the given {@code fees} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"munhuikim"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"munhuikim"},"content":" public static Fees parseFees(String fees) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"munhuikim"},"content":" requireNonNull(fees);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"munhuikim"},"content":" String trimmedFees \u003d fees.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"munhuikim"},"content":" if (!Fees.isValidFees(trimmedFees)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"munhuikim"},"content":" throw new ParseException(Fees.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"munhuikim"},"content":" return new Fees(trimmedFees);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"munhuikim"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"munhuikim"},"content":" * Parses a {@code String classId} into a {@code ClassId}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"munhuikim"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"munhuikim"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"munhuikim"},"content":" * @throws ParseException if the given {@code classId} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"munhuikim"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"munhuikim"},"content":" public static ClassId parseClassId(String classId) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"munhuikim"},"content":" requireNonNull(classId);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"munhuikim"},"content":" String trimmedClassId \u003d classId.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"munhuikim"},"content":" if (!ClassId.isValidClassId(trimmedClassId)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"munhuikim"},"content":" throw new ParseException(ClassId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"munhuikim"},"content":" return new ClassId(trimmedClassId);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","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":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"waihin26"},"content":" public static boolean isValidIndex(String preamble) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"waihin26"},"content":" return StringUtil.isNonZeroUnsignedInteger(preamble);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"waihin26":4,"-":124,"munhuikim":32}},{"path":"src/main/java/seedu/address/model/person/ClassId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"waihin26"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"sumomomomomo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"sumomomomomo"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"waihin26"},"content":"/**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"sumomomomomo"},"content":" * Represents a Person\u0027s fees in the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"waihin26"},"content":"public class ClassId {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"sumomomomomo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"sumomomomomo"},"content":" \"ClassId should only contain numbers, and it should be at least 1 digit long.\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"sumomomomomo"},"content":" /*","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"sumomomomomo"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"sumomomomomo"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"sumomomomomo"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{1,}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"sumomomomomo"},"content":" public final String value;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"waihin26"},"content":" /**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"sumomomomomo"},"content":" * Constructs a {@code Fees}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"sumomomomomo"},"content":" public ClassId(String classId) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"sumomomomomo"},"content":" requireNonNull(classId);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"sumomomomomo"},"content":" checkArgument(isValidClassId(classId), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"sumomomomomo"},"content":" value \u003d classId;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" * Returns true if a given string is a valid classId.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"sumomomomomo"},"content":" public static boolean isValidClassId(String test) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"sumomomomomo"},"content":" return test.isEmpty() || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"waihin26"},"content":" public String toString() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"sumomomomomo"},"content":" return value;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"waihin26"},"content":" return true;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"waihin26"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sumomomomomo"},"content":" if (!(other instanceof ClassId)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"waihin26"},"content":" return false;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"sumomomomomo"},"content":" ClassId otherClassId \u003d (ClassId) other;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"sumomomomomo"},"content":" return value.equals(otherClassId.value);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"waihin26"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"sumomomomomo"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"waihin26"},"content":"}","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"waihin26":33,"sumomomomomo":28}},{"path":"src/main/java/seedu/address/model/person/ClassIdContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hooyushing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"hooyushing"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"hooyushing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"hooyushing"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"hooyushing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"hooyushing"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"hooyushing"},"content":" * Tests that a {@code Person}\u0027s {@code ClassId} matches any of the keywords given.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"hooyushing"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"hooyushing"},"content":"public class ClassIdContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"hooyushing"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"hooyushing"},"content":" public ClassIdContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"hooyushing"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"hooyushing"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"hooyushing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"hooyushing"},"content":" return keywords.stream()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"hooyushing"},"content":" .anyMatch(keyword -\u003e regexMatch(person.getClassId().value , keyword));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"hooyushing"},"content":" private boolean regexMatch(String name, String keyword) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"hooyushing"},"content":" Pattern pattern \u003d Pattern.compile(keyword, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"hooyushing"},"content":" return pattern.matcher(name).find();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"hooyushing"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"hooyushing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"hooyushing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"hooyushing"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":" if (!(other instanceof ClassIdContainsKeywordsPredicate)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"hooyushing"},"content":" ClassIdContainsKeywordsPredicate otherClassIdContainsKeywordsPredicate \u003d (ClassIdContainsKeywordsPredicate)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"hooyushing"},"content":" other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"hooyushing"},"content":" return keywords.equals(otherClassIdContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"hooyushing"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"hooyushing"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"hooyushing"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"hooyushing"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"hooyushing":51}},{"path":"src/main/java/seedu/address/model/person/Fees.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"waihin26"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"sumomomomomo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"waihin26"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"waihin26"},"content":"/**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"waihin26"},"content":" * Represents a Person\u0027s fees in the address book.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"waihin26"},"content":"public class Fees {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"sumomomomomo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"sumomomomomo"},"content":" \"Fees should be a positive integer, only contain numbers, and should be at least 1 digit long.\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"waihin26"},"content":" /*","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"waihin26"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"waihin26"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"sumomomomomo"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\d{1,}$\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"sumomomomomo"},"content":" public final String value;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"waihin26"},"content":" /**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"waihin26"},"content":" * Constructs a {@code Fees}.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"sumomomomomo"},"content":" public Fees(String fees) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"sumomomomomo"},"content":" requireNonNull(fees);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"sumomomomomo"},"content":" checkArgument(isValidFees(fees), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"waihin26"},"content":" value \u003d fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"waihin26"},"content":" /**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" * Returns true if a given string is a valid fees.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"sumomomomomo"},"content":" public static boolean isValidFees(String test) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"sumomomomomo"},"content":" return test.isEmpty() || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"waihin26"},"content":" public String toString() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"sumomomomomo"},"content":" return value;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"waihin26"},"content":" return true;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"waihin26"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sumomomomomo"},"content":" if (!(other instanceof ClassId)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"waihin26"},"content":" return false;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"sumomomomomo"},"content":" ClassId otherClassId \u003d (ClassId) other;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"sumomomomomo"},"content":" return value.equals(otherClassId.value);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"waihin26"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"sumomomomomo"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"waihin26"},"content":"}","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"waihin26":44,"sumomomomomo":17}},{"path":"src/main/java/seedu/address/model/person/MonthsPaid.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"waihin26"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"waihin26"},"content":"import java.util.Objects;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"waihin26"},"content":"/**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"waihin26"},"content":" * Represents a Person\u0027s months paid in the address book.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"waihin26"},"content":" */","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"waihin26"},"content":"public class MonthsPaid {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"sumomomomomo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"MonthsPaid should take a string with the pattern\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"sumomomomomo"},"content":" + \" YYYY-MM, where one or of such patterns can be included if separated by a space.\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"sumomomomomo"},"content":" public static final String SPLIT_VALIDATION_REGEX \u003d \"^[0-9]{4}-[0-9]{2}$\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"waihin26"},"content":" public final String value;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"waihin26"},"content":" public MonthsPaid(String monthsPaid) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"waihin26"},"content":" this.value \u003d monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"waihin26"},"content":" public String toString() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"waihin26"},"content":" return value;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"sumomomomomo"},"content":" * Returns true if a given string is a valid monthsPaid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"waihin26"},"content":" public static boolean isValidMonthsPaid(String monthsPaid) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"sumomomomomo"},"content":" if (monthsPaid.isEmpty()) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"sumomomomomo"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"sumomomomomo"},"content":" for (String i : monthsPaid.split(\" \")) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" if (!i.matches(SPLIT_VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"sumomomomomo"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"sumomomomomo"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"waihin26"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"waihin26"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"waihin26"},"content":" return true;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"kienvumrpm"},"content":" if (!(other instanceof MonthsPaid otherMonthsPaid)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"waihin26"},"content":" return false;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"kienvumrpm"},"content":" return Objects.equals(value, otherMonthsPaid.value);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"waihin26"},"content":" @Override","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"waihin26"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"waihin26"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"waihin26"},"content":"}","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"waihin26":39,"sumomomomomo":15,"kienvumrpm":2}},{"path":"src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java","fileType":"functional-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 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":"hooyushing"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","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":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10","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":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"hooyushing"},"content":" .anyMatch(keyword -\u003e regexMatch(person.getName().fullName, keyword));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"hooyushing"},"content":" private boolean regexMatch(String name, String keyword) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"hooyushing"},"content":" Pattern pattern \u003d Pattern.compile(keyword, Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"hooyushing"},"content":" return pattern.matcher(name).find();","lastModifiedDate":"2024-09-27","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":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return false;","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":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"hooyushing":7,"-":42}},{"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":"2024-10-11","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-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","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":"-"},"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":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"waihin26"},"content":" private final Fees fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"waihin26"},"content":" private final ClassId classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"waihin26"},"content":" private final MonthsPaid monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","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":"waihin26"},"content":" public Person(Name name, Phone phone, Email email, Address address, Fees fees, ClassId classId,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":" MonthsPaid monthsPaid, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"waihin26"},"content":" requireAllNonNull(name, phone, email, address, fees, classId, monthsPaid, tags);","lastModifiedDate":"2024-09-27","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":"waihin26"},"content":" this.fees \u003d fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" this.classId \u003d classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"waihin26"},"content":" this.monthsPaid \u003d monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","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 Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return name;","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 Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"waihin26"},"content":" public Fees getFees() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"waihin26"},"content":" return fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"waihin26"},"content":" public ClassId getClassId() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"waihin26"},"content":" return classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"waihin26"},"content":" public MonthsPaid getMonthsPaid() {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"waihin26"},"content":" return monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","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 name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * This defines a weaker 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":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return true;","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":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"munhuikim"},"content":" // \u0026\u0026 fees.equals(otherPerson.fees)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"munhuikim"},"content":" // \u0026\u0026 classId.equals(otherPerson.classId)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"munhuikim"},"content":" // \u0026\u0026 monthsPaid.equals(otherPerson.monthsPaid)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","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":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","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":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"munhuikim"},"content":" //.add(\"fees\", fees)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"munhuikim"},"content":" //.add(\"classId\", classId)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"waihin26":24,"-":114,"munhuikim":5}},{"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":"waihin26"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Fees(\"200\"), new ClassId(\"1\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-01\"), getTagSet(\"friends\")),","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Fees(\"300\"), new ClassId(\"2\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-02\"), getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2024-09-27","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":"sumomomomomo"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Fees(\"400\"), new ClassId(\"3\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-03\"), getTagSet(\"neighbours\")),","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Fees(\"250\"), new ClassId(\"1\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-01\"), getTagSet(\"family\")),","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Fees(\"350\"), new ClassId(\"2\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"waihin26"},"content":" new MonthsPaid(\"2024-02\"), getTagSet(\"classmates\")),","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Fees(\"500\"), new ClassId(\"3\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"sumomomomomo"},"content":" new MonthsPaid(\"2024-12\"), getTagSet(\"colleagues\")),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"sumomomomomo"},"content":" new Person(new Name(\"Roger Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"sumomomomomo"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Fees(\"500\"), new ClassId(\"3\"),","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"sumomomomomo"},"content":" new MonthsPaid(\"2024-12\"), getTagSet(\"colleagues\")),","lastModifiedDate":"2024-10-02","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":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"waihin26":8,"sumomomomomo":10,"-":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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","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":"sumomomomomo"},"content":" private final String fees;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"sumomomomomo"},"content":" private final String classId;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" private final String monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","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":"sumomomomomo"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"fees\") String fees,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sumomomomomo"},"content":" @JsonProperty(\"classId\") String classId,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"waihin26"},"content":" @JsonProperty(\"monthsPaid\") String monthsPaid,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"sumomomomomo"},"content":" // TODO - confirm if this is the implementation that we want","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"sumomomomomo"},"content":" this.fees \u003d fees !\u003d null ? fees : \"\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"sumomomomomo"},"content":" this.classId \u003d classId !\u003d null ? classId : \"\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"sumomomomomo"},"content":" this.monthsPaid \u003d monthsPaid !\u003d null ? monthsPaid : \"\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","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":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"waihin26"},"content":" fees \u003d source.getFees().value;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"waihin26"},"content":" classId \u003d source.getClassId().value;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"waihin26"},"content":" monthsPaid \u003d source.getMonthsPaid().toString();","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","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":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","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":"sumomomomomo"},"content":" // Check name","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.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 (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.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 Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"sumomomomomo"},"content":" // Check phone","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.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 (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.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 Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"sumomomomomo"},"content":" // Check email","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"sumomomomomo"},"content":" // Check address","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"sumomomomomo"},"content":" // Check fees","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"waihin26"},"content":" if (!Fees.isValidFees(fees)) {","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"sumomomomomo"},"content":" throw new IllegalValueException(Fees.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"waihin26"},"content":" final Fees modelFees \u003d new Fees(fees);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"sumomomomomo"},"content":" // Check classId","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"sumomomomomo"},"content":" if (!ClassId.isValidClassId(classId)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"waihin26"},"content":" throw new IllegalValueException(ClassId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"waihin26"},"content":" final ClassId modelClassId \u003d new ClassId(classId);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"sumomomomomo"},"content":" // Check monthsPaid","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"sumomomomomo"},"content":" if (!MonthsPaid.isValidMonthsPaid(monthsPaid)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"waihin26"},"content":" throw new IllegalValueException(MonthsPaid.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"waihin26"},"content":" final MonthsPaid modelmonthsPaid \u003d new MonthsPaid(monthsPaid);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"sumomomomomo"},"content":" // Create tags","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"waihin26"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelFees, modelClassId, modelmonthsPaid,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"waihin26"},"content":" modelTags);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"waihin26":23,"sumomomomomo":26,"-":106}},{"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":"sumomomomomo"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-02","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":"waihin26"},"content":" @FXML","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"waihin26"},"content":" private Label fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"waihin26"},"content":" @FXML","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" private Label classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"waihin26"},"content":" @FXML","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"waihin26"},"content":" private Label monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"waihin26"},"content":" fees.setText(String.valueOf(person.getFees().value));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"waihin26"},"content":" classId.setText(String.valueOf(person.getClassId().value));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"waihin26"},"content":" monthsPaid.setText(String.valueOf(person.getMonthsPaid().value));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"waihin26":12,"sumomomomomo":1,"-":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\"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":"waihin26"},"content":" \u003cLabel fx:id\u003d\"fees\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$fees\" /\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"waihin26"},"content":" \u003cLabel fx:id\u003d\"classId\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$classId\" /\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" \u003cLabel fx:id\u003d\"monthsPaid\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$monthsPaid\" /\u003e","lastModifiedDate":"2024-09-27","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":{"waihin26":3,"-":36}},{"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":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASSID_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FEES_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","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":"2024-10-11","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":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"munhuikim"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"munhuikim"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-10-11","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":"-"},"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":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"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":110,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","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-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"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":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","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":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"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":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":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"munhuikim"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + FEES_DESC_AMY + CLASSID_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":173,"munhuikim":6}},{"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":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSID;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEES;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","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":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","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":"munhuikim"},"content":" public static final String VALID_FEES_AMY \u003d \"100\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"munhuikim"},"content":" public static final String VALID_FEES_BOB \u003d \"200\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"munhuikim"},"content":" public static final String VALID_CLASSID_AMY \u003d \"1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"munhuikim"},"content":" public static final String VALID_CLASSID_BOB \u003d \"2\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"munhuikim"},"content":" public static final String FEES_DESC_AMY \u003d \" \" + PREFIX_FEES + VALID_FEES_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"munhuikim"},"content":" public static final String FEES_DESC_BOB \u003d \" \" + PREFIX_FEES + VALID_FEES_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"munhuikim"},"content":" public static final String CLASSID_DESC_AMY \u003d \" \" + PREFIX_CLASSID + VALID_CLASSID_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"munhuikim"},"content":" public static final String CLASSID_DESC_BOB \u003d \" \" + PREFIX_CLASSID + VALID_CLASSID_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"munhuikim"},"content":" public static final String INVALID_FEES_DESC \u003d \" \" + PREFIX_FEES + \"91a\"; // \u0027a\u0027 not allowed in fees","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"munhuikim"},"content":" public static final String INVALID_CLASSID_DESC \u003d \" \" + PREFIX_CLASSID + \"1a\"; // \u0027a\u0027 not allowed in classId","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"munhuikim"},"content":" .withFees(VALID_FEES_AMY).withClassId(VALID_CLASSID_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"munhuikim"},"content":" .withFees(VALID_FEES_BOB).withClassId(VALID_CLASSID_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":131,"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":132,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"-":128,"munhuikim":16}},{"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":"waihin26"},"content":" Person editedPerson \u003d new PersonBuilder().withTags(\"friends\").build();","lastModifiedDate":"2024-10-12","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":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","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":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","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":{"waihin26":1,"-":183}},{"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":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASSID_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FEES_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","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":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","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 phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","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 email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","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":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"munhuikim"},"content":" // different fees -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"munhuikim"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_FEES_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"munhuikim"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"munhuikim"},"content":" // different classID -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"munhuikim"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_CLASSID_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"munhuikim"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"munhuikim"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", fees\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"munhuikim"},"content":" + editPersonDescriptor.getFees().orElse(null) + \", classId\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"munhuikim"},"content":" + editPersonDescriptor.getClassId().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":70,"munhuikim":14}},{"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":"hooyushing"},"content":"import seedu.address.model.person.ClassIdContainsKeywordsPredicate;","lastModifiedDate":"2024-10-03","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":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":" ClassIdContainsKeywordsPredicate thirdPredicate \u003d new ClassIdContainsKeywordsPredicate(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":" Collections.singletonList(\"third\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" ClassIdContainsKeywordsPredicate fourthPredicate \u003d new ClassIdContainsKeywordsPredicate(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":" Collections.singletonList(\"fourth\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"hooyushing"},"content":" FindCommand findThirdCommand \u003d new FindCommand(thirdPredicate);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"hooyushing"},"content":" FindCommand findFourthCommand \u003d new FindCommand(fourthPredicate);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"hooyushing"},"content":" assertTrue(findThirdCommand.equals(findThirdCommand));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"hooyushing"},"content":" FindCommand findThirdCommandCopy \u003d new FindCommand(thirdPredicate);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"hooyushing"},"content":" assertTrue(findThirdCommand.equals(findThirdCommandCopy));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"hooyushing"},"content":" assertFalse(findThirdCommand.equals(findFirstCommand));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"hooyushing"},"content":" assertFalse(findThirdCommand.equals(findFourthCommand));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","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-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","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":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"hooyushing"},"content":" ClassIdContainsKeywordsPredicate classIdPredicate \u003d new ClassIdContainsKeywordsPredicate(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"hooyushing"},"content":" Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"hooyushing"},"content":" FindCommand findCommandClassId \u003d new FindCommand(classIdPredicate);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"hooyushing"},"content":" String expectedClassId \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + classIdPredicate + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"hooyushing"},"content":" assertEquals(expectedClassId, findCommandClassId.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"hooyushing":22,"-":91}},{"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":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASSID_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASSID_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FEES_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FEES_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_CLASSID_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FEES_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSID;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEES;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"munhuikim"},"content":" + ADDRESS_DESC_BOB + FEES_DESC_BOB + CLASSID_DESC_BOB + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"munhuikim"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"munhuikim"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + FEES_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"munhuikim"},"content":" + ADDRESS_DESC_BOB + FEES_DESC_BOB + CLASSID_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"munhuikim"},"content":" // multiple fees","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, FEES_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"munhuikim"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FEES));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"munhuikim"},"content":" // multiple classIds","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, CLASSID_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"munhuikim"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_CLASSID));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"munhuikim"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"munhuikim"},"content":" + ADDRESS_DESC_AMY + FEES_DESC_AMY + CLASSID_DESC_AMY","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"munhuikim"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"munhuikim"},"content":" PREFIX_PHONE, PREFIX_FEES, PREFIX_CLASSID));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid value followed by valid 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, 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":"munhuikim"},"content":" // invalid fees","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, INVALID_FEES_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"munhuikim"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FEES));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"munhuikim"},"content":" // invalid classID","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, INVALID_CLASSID_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"munhuikim"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_CLASSID));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"munhuikim"},"content":" // invalid fees","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_FEES_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"munhuikim"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FEES));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"munhuikim"},"content":" // invalid classID","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_CLASSID_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"munhuikim"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_CLASSID));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"munhuikim"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"munhuikim"},"content":" + FEES_DESC_AMY + CLASSID_DESC_AMY,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB,","lastModifiedDate":"2024-10-11","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":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" expectedMessage);","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},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"munhuikim"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"munhuikim"},"content":" // invalid classID","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"munhuikim"},"content":" + INVALID_CLASSID_DESC + FEES_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"munhuikim"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"munhuikim"},"content":" // invalid fees","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + INVALID_FEES_DESC","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"munhuikim"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"munhuikim"},"content":" + CLASSID_DESC_BOB + FEES_DESC_BOB,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"munhuikim"},"content":" + ADDRESS_DESC_BOB + CLASSID_DESC_BOB + FEES_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":183,"munhuikim":73}},{"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":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.testutil.PersonUtil.getAddCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","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":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-11","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":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-11","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":"munhuikim"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(getAddCommand(person));","lastModifiedDate":"2024-10-10","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":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"waihin26"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor).toString(), command.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","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":"hooyushing"},"content":" FindCommand.COMMAND_WORD + \" n/\" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","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":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"waihin26":2,"hooyushing":1,"-":98,"munhuikim":2}},{"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":"-"},"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.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","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_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", 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":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, 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":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":93,"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":94,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"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":101,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","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_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_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":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","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":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","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":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","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_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"waihin26"},"content":" // valid followed by invalid - only phone should be detected as duplicate","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"waihin26"},"content":" // invalid followed by valid - only phone should be detected as duplicate","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"waihin26"},"content":" // multiple valid fields repeated - detect the first duplicate (phone in this case)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"waihin26"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"waihin26"},"content":" // Only phone should be detected as the first duplicate","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"waihin26"},"content":" // multiple invalid values - detect the first duplicate (phone in this case)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"waihin26"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"waihin26"},"content":" + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"waihin26"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"waihin26"},"content":" // Again, only phone should be detected first","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","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":{"waihin26":11,"-":196}},{"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":"hooyushing"},"content":"import seedu.address.model.person.ClassIdContainsKeywordsPredicate;","lastModifiedDate":"2024-10-03","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":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"hooyushing"},"content":" assertParseSuccess(parser, \"n/Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"hooyushing"},"content":" assertParseSuccess(parser, \"n/ \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-09-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},{"lineNumber":36,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"hooyushing"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"hooyushing"},"content":" public void parse_invalidArgsWithName_throwsParseException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"hooyushing"},"content":" // missing keywords after n/","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"hooyushing"},"content":" assertParseFailure(parser, \"n/\",","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"hooyushing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"hooyushing"},"content":" // missing both prefixes","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"hooyushing"},"content":" assertParseFailure(parser, \"Alice Bob\",","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"hooyushing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"hooyushing"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"hooyushing"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"hooyushing"},"content":" public void parse_validArgsWithClassId_returnsFindCommand() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"hooyushing"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"hooyushing"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"hooyushing"},"content":" new FindCommand(new ClassIdContainsKeywordsPredicate(Arrays.asList(\"1\", \"2\")));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"hooyushing"},"content":" assertParseSuccess(parser, \"c/1 2\", expectedFindCommand);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"hooyushing"},"content":" assertParseSuccess(parser, \"c/ \\n 1 \\n \\t 2 \\t\", expectedFindCommand);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"hooyushing"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"hooyushing":26,"-":35}},{"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":"sumomomomomo"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-10-02","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":"sumomomomomo"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"sumomomomomo"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"sumomomomomo"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","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":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"sumomomomomo"},"content":" private static final String INVALID_CLASS_ID \u003d \"-1\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"sumomomomomo"},"content":" private static final String INVALID_FEES \u003d \"-300\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"sumomomomomo"},"content":" private static final String INVALID_MONTHS_PAID \u003d \"123\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"sumomomomomo"},"content":" private static final String VALID_CLASS_ID \u003d BENSON.getClassId().toString();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"sumomomomomo"},"content":" private static final String VALID_FEES \u003d BENSON.getFees().toString();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"sumomomomomo"},"content":" private static final String VALID_MONTHS_PAID \u003d BENSON.getMonthsPaid().toString();","lastModifiedDate":"2024-10-02","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":"-"},"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":"-"},"content":" public void toModelType_invalidName_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":"sumomomomomo"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","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":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","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":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","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_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"waihin26"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"sumomomomomo"},"content":" VALID_CLASS_ID, VALID_MONTHS_PAID, invalidTags);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_nullFees_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"sumomomomomo"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"sumomomomomo"},"content":" assert person.toModelType().getFees().value.isEmpty();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"sumomomomomo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"sumomomomomo"},"content":" fail();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_invalidFees_throwsIllegalValueException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"sumomomomomo"},"content":" String expectedMessage \u003d Fees.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"sumomomomomo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_nullClassId_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, null,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"sumomomomomo"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"sumomomomomo"},"content":" assert person.toModelType().getClassId().value.isEmpty();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"sumomomomomo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"sumomomomomo"},"content":" fail();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_invalidClassId_throwsIllegalValueException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, INVALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"sumomomomomo"},"content":" VALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"sumomomomomo"},"content":" String expectedMessage \u003d ClassId.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"sumomomomomo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_nullMonthsPaid_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"sumomomomomo"},"content":" null, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"sumomomomomo"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"sumomomomomo"},"content":" assert person.toModelType().getMonthsPaid().value.isEmpty();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"sumomomomomo"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"sumomomomomo"},"content":" fail();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"sumomomomomo"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"sumomomomomo"},"content":" public void toModelType_invalidMonthsPaid_throwsIllegalValueException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"sumomomomomo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"sumomomomomo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_FEES, VALID_CLASS_ID,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"sumomomomomo"},"content":" INVALID_MONTHS_PAID, VALID_TAGS);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"sumomomomomo"},"content":" String expectedMessage \u003d MonthsPaid.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"sumomomomomo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"waihin26":1,"sumomomomomo":94,"-":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":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"munhuikim"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","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":"munhuikim"},"content":" descriptor.setFees(person.getFees());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"munhuikim"},"content":" descriptor.setClassId(person.getClassId());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"waihin26"},"content":" if (person.getTags().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"waihin26"},"content":" descriptor.setTags(null); // Set tags to null if no tags are provided","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"waihin26"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"waihin26"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"waihin26"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","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 Phone} 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 withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","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":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","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":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} 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 withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"munhuikim"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"munhuikim"},"content":" * Sets the {@code Fees} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"munhuikim"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"munhuikim"},"content":" public EditPersonDescriptorBuilder withFees(String fees) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"munhuikim"},"content":" descriptor.setFees(new Fees(fees));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"munhuikim"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"munhuikim"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"munhuikim"},"content":" * Sets the {@code ClassId} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"munhuikim"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"munhuikim"},"content":" public EditPersonDescriptorBuilder withClassId(String classId) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"munhuikim"},"content":" descriptor.setClassId(new ClassId(classId));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"munhuikim"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"munhuikim"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":100,"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":101,"author":{"gitId":"-"},"content":" * 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 EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"munhuikim"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"waihin26":5,"-":87,"munhuikim":21}},{"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":"waihin26"},"content":"import seedu.address.model.person.ClassId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.Fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"waihin26"},"content":"import seedu.address.model.person.MonthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","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":"sumomomomomo"},"content":" public static final String DEFAULT_FEES \u003d \"564\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"sumomomomomo"},"content":" public static final String DEFAULT_CLASS_ID \u003d \"1\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"sumomomomomo"},"content":" public static final String DEFAULT_MONTHS_PAID \u003d \"2024-01 2024-02\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"waihin26"},"content":" private Fees fees;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"waihin26"},"content":" private ClassId classId;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"waihin26"},"content":" private MonthsPaid monthsPaid;","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"sumomomomomo"},"content":" fees \u003d new Fees(DEFAULT_FEES);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"sumomomomomo"},"content":" classId \u003d new ClassId(DEFAULT_CLASS_ID);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sumomomomomo"},"content":" monthsPaid \u003d new MonthsPaid(DEFAULT_MONTHS_PAID);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"sumomomomomo"},"content":" fees \u003d personToCopy.getFees();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"sumomomomomo"},"content":" classId \u003d personToCopy.getClassId();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"sumomomomomo"},"content":" monthsPaid \u003d personToCopy.getMonthsPaid();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","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":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","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":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"sumomomomomo"},"content":" * Sets the {@code Fees} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"sumomomomomo"},"content":" public PersonBuilder withFees(String fees) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"sumomomomomo"},"content":" this.fees \u003d new Fees(fees);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"sumomomomomo"},"content":" return this;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"sumomomomomo"},"content":" * Sets the {@code ClassId} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"sumomomomomo"},"content":" public PersonBuilder withClassId(String classId) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"sumomomomomo"},"content":" this.classId \u003d new ClassId(classId);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"sumomomomomo"},"content":" return this;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"sumomomomomo"},"content":" * Sets the {@code MonthsPaid} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"sumomomomomo"},"content":" public PersonBuilder withMonthsPaid(String monthsPaid) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"sumomomomomo"},"content":" this.monthsPaid \u003d new MonthsPaid(monthsPaid);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"sumomomomomo"},"content":" return this;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"sumomomomomo"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"sumomomomomo"},"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-02","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"sumomomomomo"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"sumomomomomo"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"sumomomomomo"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"sumomomomomo"},"content":" return this;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"sumomomomomo"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"sumomomomomo"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"waihin26"},"content":" return new Person(name, phone, email, address, fees, classId, monthsPaid, tags);","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"waihin26":7,"sumomomomomo":41,"-":87}},{"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-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSID;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"munhuikim"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEES;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","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":"waihin26"},"content":"","lastModifiedDate":"2024-10-12","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":"munhuikim"},"content":" sb.append(PREFIX_FEES + person.getFees().value + \" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"munhuikim"},"content":" sb.append(PREFIX_CLASSID + person.getClassId().value + \" \");","lastModifiedDate":"2024-10-10","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":"-"},"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":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"munhuikim"},"content":" descriptor.getFees().ifPresent(fees -\u003e sb.append(PREFIX_FEES).append(fees.value).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"munhuikim"},"content":" descriptor.getClassId().ifPresent(classId -\u003e sb.append(PREFIX_CLASSID).append(classId.value).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"waihin26"},"content":" descriptor.getTags().get().forEach(tag -\u003e sb.append(PREFIX_TAG).append(tag.tagName).append(\" \"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"waihin26":2,"-":53,"munhuikim":6}}] diff --git a/AY2425S1-CS2103T-T15-2_tp_master/commits.json b/AY2425S1-CS2103T-T15-2_tp_master/commits.json index 53c3ca0d..7ea5e932 100644 --- a/AY2425S1-CS2103T-T15-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-T15-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"waihin26":[{"date":"2024-09-27","commitResults":[{"hash":"10d03b97dd2486151a8ed94d1cc17e7c86211eec","isMergeCommit":false,"messageTitle":"Add about us message for myself. Includes personal picture and linkedin link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"15a01b0a8ab13d6797881d5fef034d80b9713295","isMergeCommit":false,"messageTitle":"Add NFR and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":124,"deletions":26}}},{"hash":"55ef4303b55047d61b28d129540a81201b57c63f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-NFRs-\u0026-use-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c68716ae3d097704999c713952083edb7d8cdfdc","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":165,"deletions":123}}},{"hash":"386ef59a99406f6a4b9aa4b3026b2f2d030df248","isMergeCommit":false,"messageTitle":"Fix usecases in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":65}}},{"hash":"ea6b86460a562fddd7029af4a6312e8da5d7df50","isMergeCommit":false,"messageTitle":"add fees, classid, monthspaid field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":303,"deletions":19},"test-code":{"insertions":38,"deletions":10}}}]},{"date":"2024-10-10","commitResults":[{"hash":"beb5b7b976f84f69678d1813eb5073b31be8d68e","isMergeCommit":false,"messageTitle":"Update extensions numbering","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}}]}],"sumomomomomo":[{"date":"2024-09-27","commitResults":[{"hash":"06d5b0e0ebee4328e92e1eef3f4bd05e77b1a404","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e2600c41ad844f1e0535844dc8d434eea0a34efe","isMergeCommit":false,"messageTitle":"Add Matthew\u0027s info into AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"5511da3cbdcef691a68e94fa4cd820476d17d8ad","isMergeCommit":false,"messageTitle":"Rename matthew.png to sumomomomomo.png; edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}}]},{"date":"2024-09-30","commitResults":[{"hash":"a196d58a813ff35ad5272e505d0d392b5b712655","isMergeCommit":false,"messageTitle":"Edit product scope for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"d0302d3710aeff089a7423abe52ddb5609a07eeb","isMergeCommit":true,"messageTitle":"Merge pull request #57 from sumomomomomo/edit-product-scope","messageBody":"Edit product scope for DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"ede46bc993015209b6ce7c23888404787ca68036","isMergeCommit":false,"messageTitle":"Fix failing testcases","messageBody":"* Fix Fees, ClassId, MonthsPaid to have `String` type for `value`\n* Update Storage implementation - TODO: to decide if fees, classId, monthsPaid should be optional fields in json\n* Rollback some changes to add/edit commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":85},"test-code":{"insertions":69,"deletions":38}}},{"hash":"0549fc81415d1132cdd3f447fab8a933c7dd38d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T15-2:master\u0027 into branch-add-fees-classid-markpaid","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7f6a724b6b0f9e1344111030f2bafe1756e083fe","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":9}}},{"hash":"fd7cc2b6b079a2661d8833b085c59c36f2897d62","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":17},"test-code":{"insertions":67,"deletions":1}}},{"hash":"857383488a5c0cd66d4d0266539d2907d2f8d073","isMergeCommit":false,"messageTitle":"Remove unused parser functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"cce775888c57c76eb5cdfb54bd37884eab959b0b","isMergeCommit":true,"messageTitle":"Merge pull request #59 from sumomomomomo/branch-add-fees-classid-markpaid","messageBody":"Add fees, classId, monthsPaid fields","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"b0610eb21d21b87af2439a410e640c1756993692","isMergeCommit":true,"messageTitle":"Merge pull request #69 from kienvumrpm/add-markpaid","messageBody":"Implement markpaid","fileTypesAndContributionMap":{}},{"hash":"2e96f0a95dbbbb753f3f132515ca57706fc1e545","isMergeCommit":false,"messageTitle":"Edit comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7}}}]}],"hooyushing":[{"date":"2024-09-21","commitResults":[{"hash":"b5b865bae6bcf4e6c7e5c138f393becd27f53152","isMergeCommit":true,"messageTitle":"Merge pull request #5 from hooyushing/branch-add-photo","messageBody":"Add picture","fileTypesAndContributionMap":{}}]},{"date":"2024-09-27","commitResults":[{"hash":"402d117f29a9b083260c78caeac615884294ae16","isMergeCommit":true,"messageTitle":"Merge pull request #12 from waihin26/add-waihin-photo","messageBody":"Add profile photo","fileTypesAndContributionMap":{}},{"hash":"9b0085d2752761aa61337f834c5310fa4c68916e","isMergeCommit":true,"messageTitle":"Merge pull request #13 from sumomomomomo/add-matthew-photo","messageBody":"Add Matthew\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"bef3eeee6ab47a942bad906cc76aac8c842d28bb","isMergeCommit":true,"messageTitle":"Merge pull request #14 from munhuikim/add-munhui-photo","messageBody":"Add Munhui\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"4346ed65a063782fd3a09feb74e50d91152811a7","isMergeCommit":false,"messageTitle":"Add personal description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"27a4427c4343c91267fa6a9fa6e7991b5b03e166","isMergeCommit":true,"messageTitle":"Merge pull request #19 from hooyushing/branch-about-us","messageBody":"Add personal description","fileTypesAndContributionMap":{}},{"hash":"580ae50208708b792b1e4c49f5956193f3c5d38d","isMergeCommit":true,"messageTitle":"Merge pull request #20 from sumomomomomo/edit-aboutus","messageBody":"Add Matthew\u0027s info into AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"389fa904ae0953001e4e06dd9ed65dee7863d2ce","isMergeCommit":true,"messageTitle":"Merge pull request #21 from waihin26/edit-aboutUs","messageBody":"Add about us message for Wai Hin","fileTypesAndContributionMap":{}},{"hash":"200e7edff8c7953ec13d9fa37ffc00c7e2cd37bf","isMergeCommit":true,"messageTitle":"Merge pull request #26 from munhuikim/branch-munhui-profile","messageBody":"Add information about munhuikim","fileTypesAndContributionMap":{}},{"hash":"3ce3268dfd0ac763d9c61e1191ff49047fa8c3f2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from kienvumrpm/add-about-kien","messageBody":"add about Kien","fileTypesAndContributionMap":{}},{"hash":"a4bae6ce65d898236c7a3d6767610e02c03a6b13","isMergeCommit":true,"messageTitle":"Merge pull request #29 from munhuikim/branch-munhui-profile","messageBody":"Add image link for munhui","fileTypesAndContributionMap":{}},{"hash":"495d700e3c321fec5257f9898726fdfbc7396f0b","isMergeCommit":true,"messageTitle":"Merge pull request #31 from sumomomomomo/edit-aboutus","messageBody":"Rename matthew.png to sumomomomomo.png; edit AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"5710476c47370a2bc7f77803c7e668bb2e36442d","isMergeCommit":false,"messageTitle":"Add ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}},{"hash":"3e71d65167c0230f128fa3265bae0617ee51f8d9","isMergeCommit":false,"messageTitle":"Add emoji","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"dfe6b6abc6d27ff013cdff29f40fac614e854878","isMergeCommit":true,"messageTitle":"Merge pull request #35 from hooyushing/branch-README","messageBody":"Add ReadMe","fileTypesAndContributionMap":{}},{"hash":"ed2ffea0971983bb0799925f464c2b8c8d7fc640","isMergeCommit":true,"messageTitle":"Merge pull request #36 from sumomomomomo/edit-ui-png","messageBody":"Edit Ui.png","fileTypesAndContributionMap":{}},{"hash":"3be5bd66243a539056a9d14e2e572a0313281a26","isMergeCommit":false,"messageTitle":"Add site-wide change","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"51f7b3970b89b55adffff5deba27f414964a76f5","isMergeCommit":true,"messageTitle":"Merge pull request #38 from hooyushing/branch-config","messageBody":"Add site-wide change","fileTypesAndContributionMap":{}},{"hash":"1b2c5789fc3a6b8fb5ab14287745cd7c33d1f167","isMergeCommit":true,"messageTitle":"Merge pull request #40 from munhuikim/branch-user-stories","messageBody":"Add user stories and glossary","fileTypesAndContributionMap":{}},{"hash":"d00a2a0132ad9e1548f56f75792e20c9253e5eea","isMergeCommit":true,"messageTitle":"Merge pull request #41 from waihin26/add-NFRs-\u0026-use-cases","messageBody":"Add NFR and use cases","fileTypesAndContributionMap":{}},{"hash":"52cb337e0f9aa47771b426c203dadbf8e829051a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from waihin26/branch-hi","messageBody":"Update developer guide","fileTypesAndContributionMap":{}},{"hash":"02ebd1bb6870d924a495c75a2c36d8c007717312","isMergeCommit":false,"messageTitle":"Change find command to follow format","messageBody":"Add fuzzy search through regex\n","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":5},"test-code":{"insertions":3,"deletions":3}}},{"hash":"c376c7234537c1321f707c7cae6a92b7bf4d7393","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"710b787c6315f143d61012f0ed6bafcb55f72de8","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1f8e2f022c4e1eb09a8a62e8e7fb7093e293e111","isMergeCommit":false,"messageTitle":"Add test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"9fbc4ab9db4abc11ac77b1a0ea48ae899214fbef","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"83050ca0a3eab434fded25bcb59fbce6443daf50","isMergeCommit":false,"messageTitle":"Add find to support prefix n/","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":20}}},{"hash":"ecc280b74530b59c3b14408e7e6746d977fa24a6","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"fdc766e0f5a9f6c6b7dec4687c0e7df04599ed86","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"2d04c037fa22adf9352de40bbd2c7dc5b35225e4","isMergeCommit":true,"messageTitle":"Merge pull request #54 from hooyushing/branch-add-find","messageBody":"Change find command to follow format","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"0ccfa2b64089ba65d7ac3a9959f7e5f6f31f24a2","isMergeCommit":false,"messageTitle":"Add find by classid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":7},"test-code":{"insertions":21,"deletions":0}}},{"hash":"ce3e0f44a64aed4676f816417febf6049369e5cf","isMergeCommit":false,"messageTitle":"Change style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5},"test-code":{"insertions":4,"deletions":3}}},{"hash":"284bb671966c49fd436dc1383061c6b674dd3522","isMergeCommit":false,"messageTitle":"Add test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":16,"deletions":1}}},{"hash":"dc081331927c2b814e09d64b9ab0a83ea75026ad","isMergeCommit":true,"messageTitle":"Merge pull request #64 from hooyushing/branch-add-find-class","messageBody":"Add find by classid","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"f76d03396c92339b98d082d98dafe016d4c05406","isMergeCommit":false,"messageTitle":"Update comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"f8835932735e71329a84a517fd7249eb482f009e","isMergeCommit":true,"messageTitle":"Merge pull request #66 from hooyushing/branch-add-find-class","messageBody":"Update comment","fileTypesAndContributionMap":{}},{"hash":"9ca0689201bc30cc4869916910b3d50a8a47459f","isMergeCommit":true,"messageTitle":"Merge pull request #68 from waihin26/fix-extension-numbers","messageBody":"Update extensions numbering","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"e2dc0479056568f84fdb409d38599ed0ef33d201","isMergeCommit":true,"messageTitle":"Merge pull request #74 from sumomomomomo/edit-comments-markpaid","messageBody":"Edit comments for markpaid","fileTypesAndContributionMap":{}}]}],"munhuikim":[{"date":"2024-09-27","commitResults":[{"hash":"2a9b5d366f161c73af672fa6e4803b6eb6e8e79f","isMergeCommit":false,"messageTitle":"Add information about munhuikim","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"7f4461ac47928942421924a3d1e6002435c7ba66","isMergeCommit":false,"messageTitle":"Add roles and responsibilities for munhui kim","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"6e3335e6c028ca3f13f2b65a7f1f4ecf314bb55e","isMergeCommit":false,"messageTitle":"Add image link for munhui","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8dcd023fb14e8549bbba53b54ff99d756d2f4f56","isMergeCommit":false,"messageTitle":"Add user stories and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":37}}}]}],"kienvumrpm":[{"date":"2024-09-27","commitResults":[{"hash":"765aed049a057361af443bb3b6f7f8cc95b66abb","isMergeCommit":false,"messageTitle":"add about Kien","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"18aeae7d322eddfef51eaed57474ddd6a8f619cc","isMergeCommit":false,"messageTitle":"Add role and responsilibities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"11a0a7a1a210070fff76b18000aeab13b6521bf6","isMergeCommit":false,"messageTitle":"Implement markpaid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":2}}},{"hash":"c2b2e0fdd6c00440256828643ccecca70da24920","isMergeCommit":false,"messageTitle":"Change line break format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":90}}}]}]},"authorFileTypeContributionMap":{"waihin26":{"docs":119,"functional-code":201,"test-code":8},"sumomomomomo":{"docs":15,"functional-code":110,"test-code":135},"hooyushing":{"docs":11,"functional-code":133,"test-code":49,"other":2},"munhuikim":{"docs":16,"functional-code":0,"test-code":0},"kienvumrpm":{"docs":4,"functional-code":85,"test-code":0}},"authorContributionVariance":{"waihin26":35380.88,"sumomomomomo":7899.7046,"hooyushing":1724.7191,"munhuikim":166.78513,"kienvumrpm":3250.4463},"authorDisplayNameMap":{"waihin26":"CS2103T-T15-2 WONG.. HIN","sumomomomomo":"CS2103T-T15-2 MATT.. HAO","hooyushing":"CS2103T-T15-2 HOO ..HING","munhuikim":"CS2103T-T15-2 KIM ..NHUI","kienvumrpm":"CS2103T-T15-2 VU H..KIEN"}} +{"authorDailyContributionsMap":{"waihin26":[{"date":"2024-09-27","commitResults":[{"hash":"10d03b97dd2486151a8ed94d1cc17e7c86211eec","isMergeCommit":false,"messageTitle":"Add about us message for myself. Includes personal picture and linkedin link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"15a01b0a8ab13d6797881d5fef034d80b9713295","isMergeCommit":false,"messageTitle":"Add NFR and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":124,"deletions":26}}},{"hash":"55ef4303b55047d61b28d129540a81201b57c63f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-NFRs-\u0026-use-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c68716ae3d097704999c713952083edb7d8cdfdc","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":165,"deletions":123}}},{"hash":"386ef59a99406f6a4b9aa4b3026b2f2d030df248","isMergeCommit":false,"messageTitle":"Fix usecases in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":65}}},{"hash":"ea6b86460a562fddd7029af4a6312e8da5d7df50","isMergeCommit":false,"messageTitle":"add fees, classid, monthspaid field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":303,"deletions":19},"test-code":{"insertions":38,"deletions":10}}}]},{"date":"2024-10-10","commitResults":[{"hash":"beb5b7b976f84f69678d1813eb5073b31be8d68e","isMergeCommit":false,"messageTitle":"Update extensions numbering","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d15f8e18b2362cce30fc75ed529abb3be97ef245","isMergeCommit":false,"messageTitle":"fixing some cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":32},"test-code":{"insertions":16,"deletions":23}}},{"hash":"68fec2f7dc1ab7618407d927ff3166bdd66318da","isMergeCommit":false,"messageTitle":"Fix more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":6,"deletions":1}}}]}],"sumomomomomo":[{"date":"2024-09-27","commitResults":[{"hash":"06d5b0e0ebee4328e92e1eef3f4bd05e77b1a404","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e2600c41ad844f1e0535844dc8d434eea0a34efe","isMergeCommit":false,"messageTitle":"Add Matthew\u0027s info into AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"5511da3cbdcef691a68e94fa4cd820476d17d8ad","isMergeCommit":false,"messageTitle":"Rename matthew.png to sumomomomomo.png; edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}}]},{"date":"2024-09-30","commitResults":[{"hash":"a196d58a813ff35ad5272e505d0d392b5b712655","isMergeCommit":false,"messageTitle":"Edit product scope for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"d0302d3710aeff089a7423abe52ddb5609a07eeb","isMergeCommit":true,"messageTitle":"Merge pull request #57 from sumomomomomo/edit-product-scope","messageBody":"Edit product scope for DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"ede46bc993015209b6ce7c23888404787ca68036","isMergeCommit":false,"messageTitle":"Fix failing testcases","messageBody":"* Fix Fees, ClassId, MonthsPaid to have `String` type for `value`\n* Update Storage implementation - TODO: to decide if fees, classId, monthsPaid should be optional fields in json\n* Rollback some changes to add/edit commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":85},"test-code":{"insertions":69,"deletions":38}}},{"hash":"0549fc81415d1132cdd3f447fab8a933c7dd38d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T15-2:master\u0027 into branch-add-fees-classid-markpaid","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7f6a724b6b0f9e1344111030f2bafe1756e083fe","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":9}}},{"hash":"fd7cc2b6b079a2661d8833b085c59c36f2897d62","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":17},"test-code":{"insertions":67,"deletions":1}}},{"hash":"857383488a5c0cd66d4d0266539d2907d2f8d073","isMergeCommit":false,"messageTitle":"Remove unused parser functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"cce775888c57c76eb5cdfb54bd37884eab959b0b","isMergeCommit":true,"messageTitle":"Merge pull request #59 from sumomomomomo/branch-add-fees-classid-markpaid","messageBody":"Add fees, classId, monthsPaid fields","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"b0610eb21d21b87af2439a410e640c1756993692","isMergeCommit":true,"messageTitle":"Merge pull request #69 from kienvumrpm/add-markpaid","messageBody":"Implement markpaid","fileTypesAndContributionMap":{}},{"hash":"2e96f0a95dbbbb753f3f132515ca57706fc1e545","isMergeCommit":false,"messageTitle":"Edit comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7}}}]}],"hooyushing":[{"date":"2024-09-21","commitResults":[{"hash":"b5b865bae6bcf4e6c7e5c138f393becd27f53152","isMergeCommit":true,"messageTitle":"Merge pull request #5 from hooyushing/branch-add-photo","messageBody":"Add picture","fileTypesAndContributionMap":{}}]},{"date":"2024-09-27","commitResults":[{"hash":"402d117f29a9b083260c78caeac615884294ae16","isMergeCommit":true,"messageTitle":"Merge pull request #12 from waihin26/add-waihin-photo","messageBody":"Add profile photo","fileTypesAndContributionMap":{}},{"hash":"9b0085d2752761aa61337f834c5310fa4c68916e","isMergeCommit":true,"messageTitle":"Merge pull request #13 from sumomomomomo/add-matthew-photo","messageBody":"Add Matthew\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"bef3eeee6ab47a942bad906cc76aac8c842d28bb","isMergeCommit":true,"messageTitle":"Merge pull request #14 from munhuikim/add-munhui-photo","messageBody":"Add Munhui\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"4346ed65a063782fd3a09feb74e50d91152811a7","isMergeCommit":false,"messageTitle":"Add personal description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"27a4427c4343c91267fa6a9fa6e7991b5b03e166","isMergeCommit":true,"messageTitle":"Merge pull request #19 from hooyushing/branch-about-us","messageBody":"Add personal description","fileTypesAndContributionMap":{}},{"hash":"580ae50208708b792b1e4c49f5956193f3c5d38d","isMergeCommit":true,"messageTitle":"Merge pull request #20 from sumomomomomo/edit-aboutus","messageBody":"Add Matthew\u0027s info into AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"389fa904ae0953001e4e06dd9ed65dee7863d2ce","isMergeCommit":true,"messageTitle":"Merge pull request #21 from waihin26/edit-aboutUs","messageBody":"Add about us message for Wai Hin","fileTypesAndContributionMap":{}},{"hash":"200e7edff8c7953ec13d9fa37ffc00c7e2cd37bf","isMergeCommit":true,"messageTitle":"Merge pull request #26 from munhuikim/branch-munhui-profile","messageBody":"Add information about munhuikim","fileTypesAndContributionMap":{}},{"hash":"3ce3268dfd0ac763d9c61e1191ff49047fa8c3f2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from kienvumrpm/add-about-kien","messageBody":"add about Kien","fileTypesAndContributionMap":{}},{"hash":"a4bae6ce65d898236c7a3d6767610e02c03a6b13","isMergeCommit":true,"messageTitle":"Merge pull request #29 from munhuikim/branch-munhui-profile","messageBody":"Add image link for munhui","fileTypesAndContributionMap":{}},{"hash":"495d700e3c321fec5257f9898726fdfbc7396f0b","isMergeCommit":true,"messageTitle":"Merge pull request #31 from sumomomomomo/edit-aboutus","messageBody":"Rename matthew.png to sumomomomomo.png; edit AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"5710476c47370a2bc7f77803c7e668bb2e36442d","isMergeCommit":false,"messageTitle":"Add ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}},{"hash":"3e71d65167c0230f128fa3265bae0617ee51f8d9","isMergeCommit":false,"messageTitle":"Add emoji","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"dfe6b6abc6d27ff013cdff29f40fac614e854878","isMergeCommit":true,"messageTitle":"Merge pull request #35 from hooyushing/branch-README","messageBody":"Add ReadMe","fileTypesAndContributionMap":{}},{"hash":"ed2ffea0971983bb0799925f464c2b8c8d7fc640","isMergeCommit":true,"messageTitle":"Merge pull request #36 from sumomomomomo/edit-ui-png","messageBody":"Edit Ui.png","fileTypesAndContributionMap":{}},{"hash":"3be5bd66243a539056a9d14e2e572a0313281a26","isMergeCommit":false,"messageTitle":"Add site-wide change","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"51f7b3970b89b55adffff5deba27f414964a76f5","isMergeCommit":true,"messageTitle":"Merge pull request #38 from hooyushing/branch-config","messageBody":"Add site-wide change","fileTypesAndContributionMap":{}},{"hash":"1b2c5789fc3a6b8fb5ab14287745cd7c33d1f167","isMergeCommit":true,"messageTitle":"Merge pull request #40 from munhuikim/branch-user-stories","messageBody":"Add user stories and glossary","fileTypesAndContributionMap":{}},{"hash":"d00a2a0132ad9e1548f56f75792e20c9253e5eea","isMergeCommit":true,"messageTitle":"Merge pull request #41 from waihin26/add-NFRs-\u0026-use-cases","messageBody":"Add NFR and use cases","fileTypesAndContributionMap":{}},{"hash":"52cb337e0f9aa47771b426c203dadbf8e829051a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from waihin26/branch-hi","messageBody":"Update developer guide","fileTypesAndContributionMap":{}},{"hash":"02ebd1bb6870d924a495c75a2c36d8c007717312","isMergeCommit":false,"messageTitle":"Change find command to follow format","messageBody":"Add fuzzy search through regex\n","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":5},"test-code":{"insertions":3,"deletions":3}}},{"hash":"c376c7234537c1321f707c7cae6a92b7bf4d7393","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"710b787c6315f143d61012f0ed6bafcb55f72de8","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1f8e2f022c4e1eb09a8a62e8e7fb7093e293e111","isMergeCommit":false,"messageTitle":"Add test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"9fbc4ab9db4abc11ac77b1a0ea48ae899214fbef","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"83050ca0a3eab434fded25bcb59fbce6443daf50","isMergeCommit":false,"messageTitle":"Add find to support prefix n/","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":20}}},{"hash":"ecc280b74530b59c3b14408e7e6746d977fa24a6","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"fdc766e0f5a9f6c6b7dec4687c0e7df04599ed86","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"2d04c037fa22adf9352de40bbd2c7dc5b35225e4","isMergeCommit":true,"messageTitle":"Merge pull request #54 from hooyushing/branch-add-find","messageBody":"Change find command to follow format","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"0ccfa2b64089ba65d7ac3a9959f7e5f6f31f24a2","isMergeCommit":false,"messageTitle":"Add find by classid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":7},"test-code":{"insertions":21,"deletions":0}}},{"hash":"ce3e0f44a64aed4676f816417febf6049369e5cf","isMergeCommit":false,"messageTitle":"Change style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5},"test-code":{"insertions":4,"deletions":3}}},{"hash":"284bb671966c49fd436dc1383061c6b674dd3522","isMergeCommit":false,"messageTitle":"Add test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":16,"deletions":1}}},{"hash":"dc081331927c2b814e09d64b9ab0a83ea75026ad","isMergeCommit":true,"messageTitle":"Merge pull request #64 from hooyushing/branch-add-find-class","messageBody":"Add find by classid","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"f76d03396c92339b98d082d98dafe016d4c05406","isMergeCommit":false,"messageTitle":"Update comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"f8835932735e71329a84a517fd7249eb482f009e","isMergeCommit":true,"messageTitle":"Merge pull request #66 from hooyushing/branch-add-find-class","messageBody":"Update comment","fileTypesAndContributionMap":{}},{"hash":"9ca0689201bc30cc4869916910b3d50a8a47459f","isMergeCommit":true,"messageTitle":"Merge pull request #68 from waihin26/fix-extension-numbers","messageBody":"Update extensions numbering","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"e2dc0479056568f84fdb409d38599ed0ef33d201","isMergeCommit":true,"messageTitle":"Merge pull request #74 from sumomomomomo/edit-comments-markpaid","messageBody":"Edit comments for markpaid","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"cdb6fdbdabdc65ff5ff29841b671674e58ec7632","isMergeCommit":true,"messageTitle":"Merge pull request #67 from munhuikim/branch-add","messageBody":"Add classId field and fees field in the AddCommand","fileTypesAndContributionMap":{}}]}],"munhuikim":[{"date":"2024-09-27","commitResults":[{"hash":"2a9b5d366f161c73af672fa6e4803b6eb6e8e79f","isMergeCommit":false,"messageTitle":"Add information about munhuikim","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"7f4461ac47928942421924a3d1e6002435c7ba66","isMergeCommit":false,"messageTitle":"Add roles and responsibilities for munhui kim","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"6e3335e6c028ca3f13f2b65a7f1f4ecf314bb55e","isMergeCommit":false,"messageTitle":"Add image link for munhui","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8dcd023fb14e8549bbba53b54ff99d756d2f4f56","isMergeCommit":false,"messageTitle":"Add user stories and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":37}}}]},{"date":"2024-10-10","commitResults":[{"hash":"9a3356328c40a0394964086b192037ae5d2b1541","isMergeCommit":false,"messageTitle":"Add classId field and fees field in the AddCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":38}}},{"hash":"78185ec4987175551cb28a8e3d7bbbcab31811e4","isMergeCommit":false,"messageTitle":"Correct failing tests in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":41},"test-code":{"insertions":152,"deletions":136}}}]},{"date":"2024-10-11","commitResults":[{"hash":"238ca6ced0260906fd03a274014b95dc79d84aa3","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":97,"deletions":40},"test-code":{"insertions":173,"deletions":68}}}]},{"date":"2024-10-12","commitResults":[{"hash":"2e9fce48101c5b83dc7d294e1dcbf36dcf1541a2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2425S1-CS2103T-T15-2/fixingOneTestCase","messageBody":"Fix test case","fileTypesAndContributionMap":{}}]}],"kienvumrpm":[{"date":"2024-09-27","commitResults":[{"hash":"765aed049a057361af443bb3b6f7f8cc95b66abb","isMergeCommit":false,"messageTitle":"add about Kien","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"18aeae7d322eddfef51eaed57474ddd6a8f619cc","isMergeCommit":false,"messageTitle":"Add role and responsilibities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"11a0a7a1a210070fff76b18000aeab13b6521bf6","isMergeCommit":false,"messageTitle":"Implement markpaid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":2}}},{"hash":"c2b2e0fdd6c00440256828643ccecca70da24920","isMergeCommit":false,"messageTitle":"Change line break format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":90}}}]}]},"authorFileTypeContributionMap":{"waihin26":{"docs":119,"functional-code":242,"test-code":29},"sumomomomomo":{"docs":15,"functional-code":108,"test-code":135},"hooyushing":{"docs":11,"functional-code":133,"test-code":49,"other":2},"munhuikim":{"docs":16,"functional-code":100,"test-code":138},"kienvumrpm":{"docs":4,"functional-code":85,"test-code":0}},"authorContributionVariance":{"waihin26":32815.676,"sumomomomomo":7276.7075,"hooyushing":1597.972,"munhuikim":14317.995,"kienvumrpm":2992.3057},"authorDisplayNameMap":{"waihin26":"CS2103T-T15-2 WONG.. HIN","sumomomomomo":"CS2103T-T15-2 MATT.. HAO","hooyushing":"CS2103T-T15-2 HOO ..HING","munhuikim":"CS2103T-T15-2 KIM ..NHUI","kienvumrpm":"CS2103T-T15-2 VU H..KIEN"}} diff --git a/AY2425S1-CS2103T-W14-2_tp_master/authorship.json b/AY2425S1-CS2103T-W14-2_tp_master/authorship.json index ef9e11e8..71b59969 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/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}}] +[{"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/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":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","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":"-"},"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":"appleshill"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_FINANCIAL_INFO + \"FINANCIAL INFO] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_SOCIAL_MEDIA_HANDLE + \"SOCIAL MEDIA HANDLE] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"appleshill"},"content":" + \"...\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"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":59,"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":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" private static final DuplicatePhoneTagger duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-13","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":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","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":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"appleshill"},"content":" String updatedFinancialInfo \u003d editPersonDescriptor.getFinancialInfo().orElse(personToEdit.getFinancialInfo());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" String updatedSocialMediaHandle \u003d editPersonDescriptor.getSocialMediaHandle()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" .orElse(personToEdit.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" updatedFinancialInfo, updatedSocialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"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":146,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"appleshill"},"content":" private String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"appleshill"},"content":" private String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"appleshill"},"content":" setFinancialInfo(toCopy.financialInfo);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"appleshill"},"content":" setSocialMediaHandle(toCopy.socialMediaHandle);","lastModifiedDate":"2024-10-06","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":"appleshill"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","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 void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.name \u003d 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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.phone \u003d 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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.email \u003d 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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","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 void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.address \u003d 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 Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"appleshill"},"content":" public void setFinancialInfo(String info) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d info;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getFinancialInfo() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(financialInfo);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"appleshill"},"content":" public void setSocialMediaHandle(String handle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d handle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getSocialMediaHandle() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","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":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","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":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(financialInfo, otherEditPersonDescriptor.financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(socialMediaHandle, otherEditPersonDescriptor.socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"appleshill"},"content":" .add(\"financial info\", financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"appleshill"},"content":" .add(\"social media handle\", socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"valhrd":4,"-":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 java.util.HashMap;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"valhrd"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"valhrd"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"valhrd"},"content":"import java.util.Set;","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 seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"valhrd"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"valhrd"},"content":" * Tags people that share the same phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"valhrd"},"content":"public class DuplicatePhoneTagger {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"valhrd"},"content":" public static final String DUPLICATE_PHONE_TAG_NAME \u003d \"DuplicatePhone\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"valhrd"},"content":" private static final Tag DUPLICATE_TAG \u003d new Tag(DUPLICATE_PHONE_TAG_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"valhrd"},"content":" private final HashMap\u003cPhone, Integer\u003e phoneFrequencies \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"valhrd"},"content":" * Uses the model to update the person list based on duplicate phone numbers","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"valhrd"},"content":" * @param model that represents the current state of the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"valhrd"},"content":" public void tagPhoneDuplicates(Model model) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"valhrd"},"content":" updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"valhrd"},"content":" updatePersonsList(model, persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":" * Counts and stores the frequency of each phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"valhrd"},"content":" * @param persons the list of persons in the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":" public void updateFrequenciesOfPhones(List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":" clearFrequencies();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.put(person.getPhone(), phoneFrequencies.getOrDefault(person.getPhone(), 0) + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":" * Checks if there exists a duplicate phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"valhrd"},"content":" * @return true if there is a duplicate, else false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"valhrd"},"content":" public boolean isDuplicatePresent() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"valhrd"},"content":" for (Phone phone : phoneFrequencies.keySet()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate(phone)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"valhrd"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"valhrd"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"valhrd"},"content":" public boolean isPhoneDuplicate(Phone phone) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"valhrd"},"content":" return phoneFrequencies.getOrDefault(phone, 0) \u003e 1;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" public void clearFrequencies() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" private void updatePersonsList(Model model, List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":" for (Person personToUpdate : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d personToUpdate.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" boolean isPhoneDuplicate \u003d isPhoneDuplicate(phone);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" Person updatedPerson \u003d updatePerson(personToUpdate, isPhoneDuplicate);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" model.setPerson(personToUpdate, updatedPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"valhrd"},"content":" private Person updatePerson(Person person, boolean isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"valhrd"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d person.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"valhrd"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"valhrd"},"content":" Address address \u003d person.getAddress();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"valhrd"},"content":" String financialInfo \u003d person.getFinancialInfo();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"valhrd"},"content":" String socialMediaHandle \u003d person.getSocialMediaHandle();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"valhrd"},"content":" Set\u003cTag\u003e newTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"valhrd"},"content":" newTags.addAll(person.getTags());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"valhrd"},"content":" newTags.add(DUPLICATE_TAG);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"valhrd"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"valhrd"},"content":" newTags.removeIf(tag -\u003e tag.equals(DUPLICATE_TAG));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"valhrd"},"content":" return new Person(name, phone, email, address, newTags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"valhrd":93}},{"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/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":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-13","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":"-"},"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":"valhrd"},"content":" private final DuplicatePhoneTagger duplicatePhoneTagger;","lastModifiedDate":"2024-10-13","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":"valhrd"},"content":" this.duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-13","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":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-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":"-"},"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":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","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":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","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":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return userPrefs.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":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","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 Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return userPrefs.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":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","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":" //\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":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(this);","lastModifiedDate":"2024-10-13","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":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(this);","lastModifiedDate":"2024-10-13","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":"-"},"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":"2017-05-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"valhrd":5,"-":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":"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: #c60000;","lastModifiedDate":"2024-10-13","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 cfe84b9f..1ff1b5b5 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":{}}]},{"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"}} +{"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":{}},{"hash":"337d5ef7d8ad11caaa81c20984f3ec64a20294f7","isMergeCommit":true,"messageTitle":"Merge pull request #58 from valhrd/master","messageBody":"Update DuplicatePhoneTagger implementation","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}}}]},{"date":"2024-10-13","commitResults":[{"hash":"72f93ecd2edd254335277e848d3f51dc73974eae","isMergeCommit":false,"messageTitle":"Update DuplicatePhoneTagger implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7}}},{"hash":"e96e03af9d92264558aab29adc40f790fa847c4d","isMergeCommit":false,"messageTitle":"Update DuplicatePhoneTagger implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"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":118,"test-code":135},"appleshill":{"docs":7,"functional-code":298,"test-code":326}},"authorContributionVariance":{"frymash":2314.8315,"RyanWarwick":368.6597,"DiegoTheExplorar":4977.4976,"valhrd":9339.415,"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/archive.zip b/archive.zip index b348756cea5121ec5ee6dd81243fe87ea9f7854d..f1c0b455a031fa36707ebe35c24a17dcc9cd61af 100644 GIT binary patch delta 335546 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®y*nY%bbfcQMQo6aW2iX?(C9oqt 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�pvj6CQuCjQdBybUB-gD-sFE+MhEo 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%0A8AGHj8 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

7I`OS~ki0E!IQ#Q3cVkIaK%0 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 z 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

J+JR$Ulpn$v`9@96;eA?>tx^u6VYnjvw4g29` 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 LfThfk4wC;5Qjm#= delta 312809 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 diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index 03511fbe..185eb913 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,55 +1,55 @@ -Oct 13, 2024 1:24:31 AM reposense.system.LogsManager addFileHandler +Oct 13, 2024 4:15:57 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Oct 13, 2024 1:24:31 AM reposense.parser.BlurbMarkdownParser parse +Oct 13, 2024 4:15:57 AM reposense.parser.BlurbMarkdownParser parse INFO: Parsing Blurbs... -Oct 13, 2024 1:24:31 AM reposense.parser.BlurbMarkdownParser parse +Oct 13, 2024 4:15:57 AM reposense.parser.BlurbMarkdownParser parse INFO: Blurbs parsed successfully! -Oct 13, 2024 1:24:31 AM reposense.parser.CsvParser validateHeader +Oct 13, 2024 4:15:57 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 13, 2024 1:24:31 AM reposense.parser.CsvParser validateHeader +Oct 13, 2024 4:15:57 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 13, 2024 1:24:31 AM reposense.parser.CsvParser isLineMalformed +Oct 13, 2024 4:15:57 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 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windistone found. The alias will belong to the last author - WinstonJin -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yadobler found. The alias will belong to the last author - yadobler -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyang found. The alias will belong to the last author - mingyang143 -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jovensoh found. The alias will belong to the last author - JovenSoh -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tkaixiang found. The alias will belong to the last author - Tkaixiang -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sleepyday found. The alias will belong to the last author - flyingsalsa -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias travis found. The alias will belong to the last author - travisim -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ziyan found. The alias will belong to the last author - LingZiyann -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ponharish found. The alias will belong to the last author - Ponharish -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windistone found. The alias will belong to the last author - WinstonJin -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yadobler found. The alias will belong to the last author - yadobler -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ponharish found. The alias will belong to the last author - Ponharish -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tkaixiang found. The alias will belong to the last author - Tkaixiang -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ziyan found. The alias will belong to the last author - LingZiyann -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias travis found. The alias will belong to the last author - travisim -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jovensoh found. The alias will belong to the last author - JovenSoh -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyang found. The alias will belong to the last author - mingyang143 -Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 4:15:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sleepyday found. The alias will belong to the last author - flyingsalsa -Oct 13, 2024 1:24:31 AM reposense.parser.CsvParser validateHeader +Oct 13, 2024 4:15:57 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Oct 13, 2024 1:24:32 AM reposense.git.GitConfig getGlobalGitLfsConfig +Oct 13, 2024 4:15:58 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 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:15:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-3/tp.git... +Oct 13, 2024 4:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-1/tp.git... -Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-2/tp.git... -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 +Oct 13, 2024 4:15:58 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 +Oct 13, 2024 4:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git to complete... -Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-3/tp.git to complete... -Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:15:58 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 +Oct 13, 2024 4:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git to complete... +Oct 13, 2024 4:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-3/tp.git completed! -Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-2/tp.git... -Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-2/tp.git to complete... -Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:15:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [1/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:15:59 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 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-1/tp.git... -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 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 +Oct 13, 2024 4:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 13, 2024 4:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git to complete... -Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git completed! +Oct 13, 2024 4:15:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-3/tp.git... +Oct 13, 2024 4:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... +Oct 13, 2024 4:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-3/tp.git to complete... -Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:00 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 4:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 13, 2024 4:16:00 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 13, 2024 1:24:33 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:16:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -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 +Oct 13, 2024 4:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-4/tp.git... +Oct 13, 2024 4:16:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 13, 2024 4:16:00 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 +Oct 13, 2024 4:16:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:24:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -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 +Oct 13, 2024 4:16:00 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 +Oct 13, 2024 4:16:00 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 +Oct 13, 2024 4:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-2/tp.git completed! -Oct 13, 2024 1:24:34 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:01 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 +Oct 13, 2024 4:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git to complete... -Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git completed! +Oct 13, 2024 4:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git... -Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git to complete... -Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git completed! -Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git... -Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git to complete... -Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-3/tp.git completed! -Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git... -Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git to complete... -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 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 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 +Oct 13, 2024 4:16:02 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 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git completed! -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 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 13, 2024 1:24:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:16:03 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 +Oct 13, 2024 4:16:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) completed! -Oct 13, 2024 1:24:37 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:16:03 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 +Oct 13, 2024 4:16:03 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 +Oct 13, 2024 4:16:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:24:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 13, 2024 1:24:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git completed! +Oct 13, 2024 4:16:03 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 13, 2024 1:24:38 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:16:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-4/tp.git... +Oct 13, 2024 4:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git to complete... +Oct 13, 2024 4:16:04 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 +Oct 13, 2024 4:16:04 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 +Oct 13, 2024 4:16:04 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 +Oct 13, 2024 4:16:04 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 +Oct 13, 2024 4:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git completed! +Oct 13, 2024 4:16:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-1/tp.git... +Oct 13, 2024 4:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git completed! +Oct 13, 2024 4:16:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-2/tp.git... +Oct 13, 2024 4:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git to complete... +Oct 13, 2024 4:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git to complete... +Oct 13, 2024 4:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 13, 2024 4:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -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 +Oct 13, 2024 4:16:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) completed! -Oct 13, 2024 1:24:39 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:16:05 AM reposense.report.ReportGenerator analyzeRepos INFO: [7/120] Analyzing 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-F14b-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-1/tp.git... -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 13, 2024 1:24:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:16:05 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 +Oct 13, 2024 4:16:05 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 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git completed! +Oct 13, 2024 4:16:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-3/tp.git... +Oct 13, 2024 4:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... +Oct 13, 2024 4:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git to complete... +Oct 13, 2024 4:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... +Oct 13, 2024 4:16:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) completed! +Oct 13, 2024 4:16:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 4:16:06 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 4:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 4:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git completed! +Oct 13, 2024 4:16:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-1/tp.git... +Oct 13, 2024 4:16:06 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 +Oct 13, 2024 4:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git to complete... +Oct 13, 2024 4:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-3/tp.git... -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 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:06 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 +Oct 13, 2024 4:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 13, 2024 4:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 13, 2024 4:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git completed! +Oct 13, 2024 4:16:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) completed! +Oct 13, 2024 4:16:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-2/tp.git... +Oct 13, 2024 4:16:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 4:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-2/tp.git to complete... -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 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 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git completed! -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 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 +Oct 13, 2024 4:16:07 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 4:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 4:16:07 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 +Oct 13, 2024 4:16:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-4/tp.git... +Oct 13, 2024 4:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-4/tp.git to complete... -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 +Oct 13, 2024 4:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git completed! +Oct 13, 2024 4:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-3/tp.git... -Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-3/tp.git to complete... -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 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-3/tp.git completed! -Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:08 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 +Oct 13, 2024 4:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git to complete... +Oct 13, 2024 4:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... +Oct 13, 2024 4:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... +Oct 13, 2024 4:16:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) completed! +Oct 13, 2024 4:16:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 4:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-2/tp.git completed! +Oct 13, 2024 4:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-2/tp.git... -Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-2/tp.git to complete... -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 +Oct 13, 2024 4:16:09 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 4:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 4:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 4:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-4/tp.git completed! -Oct 13, 2024 1:24:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-4/tp.git... -Oct 13, 2024 1:24:42 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-4/tp.git to complete... +Oct 13, 2024 4:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 4:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) completed! +Oct 13, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 4:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) completed! +Oct 13, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 4:16:10 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 +Oct 13, 2024 4:16:10 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 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 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 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 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 13, 2024 1:24:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:10 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 4:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 4:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git completed! +Oct 13, 2024 4:16:10 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 +Oct 13, 2024 4:16:10 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 +Oct 13, 2024 4:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-3/tp.git completed! +Oct 13, 2024 4:16:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git... -Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git to complete... -Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-2/tp.git completed! -Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git... -Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git to complete... -Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-4/tp.git completed! -Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-1/tp.git... -Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-1/tp.git to complete... -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 +Oct 13, 2024 4:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-1/tp.git completed! -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 +Oct 13, 2024 4:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-4/tp.git... -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 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 +Oct 13, 2024 4:16:12 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 +Oct 13, 2024 4:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git completed! +Oct 13, 2024 4:16:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-1/tp.git... +Oct 13, 2024 4:16:13 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 +Oct 13, 2024 4:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git completed! -Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-4/tp.git... -Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-1/tp.git completed! -Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:13 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 +Oct 13, 2024 4:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-1/tp.git... -Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git to complete... -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 +Oct 13, 2024 4:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 4:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 4:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 4:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) completed! +Oct 13, 2024 4:16:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 4:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 4:16:14 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 +Oct 13, 2024 4:16:14 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 +Oct 13, 2024 4:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) completed! +Oct 13, 2024 4:16:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 4:16:14 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 4:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 4:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git completed! +Oct 13, 2024 4:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-1/tp.git... -Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-1/tp.git to complete... -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 +Oct 13, 2024 4:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git completed! +Oct 13, 2024 4:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-1/tp.git... -Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git to complete... -Oct 13, 2024 1:24:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git completed! -Oct 13, 2024 1:24:48 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-1/tp.git completed! +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-1/tp.git... -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 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 +Oct 13, 2024 4:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-1/tp.git... -Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-1/tp.git to complete... -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 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 +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git to complete... +Oct 13, 2024 4:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 4:16:17 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 +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-4/tp.git... +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git completed! +Oct 13, 2024 4:16:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) completed! +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-3/tp.git... -Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git to complete... +Oct 13, 2024 4:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 4:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-3/tp.git to complete... -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 +Oct 13, 2024 4:16:17 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 +Oct 13, 2024 4:16:17 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 +Oct 13, 2024 4:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 4:16:17 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 4:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 4:16:17 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 4:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 4:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 4:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 4:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) completed! +Oct 13, 2024 4:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 13, 2024 4:16:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git completed! +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-2/tp.git... -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 +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-2/tp.git to complete... -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 +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git completed! +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-4/tp.git... -Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-4/tp.git to complete... -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 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-3/tp.git completed! -Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-3/tp.git... -Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-1/tp.git completed! +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git to complete... -Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:19 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 +Oct 13, 2024 4:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git to complete... -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 +Oct 13, 2024 4:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 4:16:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) completed! +Oct 13, 2024 4:16:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 4:16:20 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 4:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 4:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 4:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 4:16:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) completed! +Oct 13, 2024 4:16:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 4:16:20 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 4:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 4:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 13, 2024 4:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 13, 2024 4:16:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) completed! +Oct 13, 2024 4:16:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [20/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 13, 2024 4:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-2/tp.git completed! -Oct 13, 2024 1:24:52 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-4/tp.git... -Oct 13, 2024 1:24:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 13, 2024 4:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-4/tp.git to complete... -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 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 +Oct 13, 2024 4:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git completed! -Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-2/tp.git... -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 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 +Oct 13, 2024 4:16:22 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 +Oct 13, 2024 4:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 4:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-4/tp.git completed! -Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F11-2/tp.git... -Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git to complete... -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 +Oct 13, 2024 4:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 4:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) completed! +Oct 13, 2024 4:16:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 4:16:23 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 4:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 4:16:23 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 +Oct 13, 2024 4:16:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-2/tp.git... -Oct 13, 2024 1:24:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git to complete... -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 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 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 +Oct 13, 2024 4:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git completed! -Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-3/tp.git... -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 +Oct 13, 2024 4:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-3/tp.git to complete... -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 +Oct 13, 2024 4:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 4:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git completed! +Oct 13, 2024 4:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-4/tp.git... -Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git to complete... -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 +Oct 13, 2024 4:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 4:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 4:16:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) completed! +Oct 13, 2024 4:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 4:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git completed! +Oct 13, 2024 4:16:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-4/tp.git... -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 +Oct 13, 2024 4:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 4:16:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) completed! +Oct 13, 2024 4:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-4/tp.git to complete... -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 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 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [23/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 4:16:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 4:16:25 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 4:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 4:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git completed! +Oct 13, 2024 4:16:25 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 +Oct 13, 2024 4:16:25 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 +Oct 13, 2024 4:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-3/tp.git completed! -Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-3/tp.git... -Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-3/tp.git to complete... -Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:26 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 +Oct 13, 2024 4:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-1/tp.git... -Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git to complete... -Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:27 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 +Oct 13, 2024 4:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git completed! +Oct 13, 2024 4:16:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-2/tp.git... -Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-2/tp.git to complete... -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 13, 2024 1:24:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-4/tp.git... -Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-4/tp.git to complete... -Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:28 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 +Oct 13, 2024 4:16:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-1/tp.git... -Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git to complete... -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 +Oct 13, 2024 4:16:28 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 +Oct 13, 2024 4:16:28 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 +Oct 13, 2024 4:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 4:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git to complete... +Oct 13, 2024 4:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 4:16:29 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 +Oct 13, 2024 4:16:29 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 +Oct 13, 2024 4:16:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) completed! +Oct 13, 2024 4:16:29 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 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 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 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 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 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 +Oct 13, 2024 4:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 4:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-4/tp.git completed! -Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-1/tp.git... -Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:29 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 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 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 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 13, 2024 1:25:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:29 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 4:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 4:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 4:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 4:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) completed! +Oct 13, 2024 4:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 4:16:30 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 +Oct 13, 2024 4:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git completed! +Oct 13, 2024 4:16:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-2/tp.git... +Oct 13, 2024 4:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 4:16:30 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 +Oct 13, 2024 4:16:30 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 4:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 4:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-2/tp.git to complete... +Oct 13, 2024 4:16:30 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 13, 2024 1:25:00 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 4:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) completed! +Oct 13, 2024 4:16:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 4:16:31 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 4:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 4:16:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git completed! +Oct 13, 2024 4:16:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-4/tp.git... -Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-4/tp.git to complete... -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 13, 2024 1:25:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 13, 2024 4:16:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git completed! +Oct 13, 2024 4:16:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-2/tp.git... -Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-2/tp.git to complete... -Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 13, 2024 4:16:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) completed! +Oct 13, 2024 4:16:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 4:16:32 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 4:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 4:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 4:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 4:16:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-2/tp.git completed! -Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) completed! +Oct 13, 2024 4:16:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-3/tp.git... -Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-3/tp.git to complete... -Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 4:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 4:16:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-3/tp.git completed! -Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-1/tp.git... -Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-1/tp.git to complete... -Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:32 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 4:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) completed! +Oct 13, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 4:16:33 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 4:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-2/tp.git completed! -Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-2/tp.git... -Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-2/tp.git to complete... -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 +Oct 13, 2024 4:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) completed! +Oct 13, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/120] Analyzing https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) completed! +Oct 13, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-4/tp.git completed! -Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-3/tp.git... -Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:33 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 4:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 4:16:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git to complete... -Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:34 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 4:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 4:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 4:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 4:16:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) completed! +Oct 13, 2024 4:16:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 4:16:34 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 4:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 4:16:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-3/tp.git completed! -Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-2/tp.git... -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 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 +Oct 13, 2024 4:16:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-1/tp.git completed! -Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-1/tp.git... -Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git to complete... +Oct 13, 2024 4:16:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-1/tp.git to complete... -Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-2/tp.git completed! -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 +Oct 13, 2024 4:16:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-1/tp.git... -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 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 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:35 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 +Oct 13, 2024 4:16:35 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 +Oct 13, 2024 4:16:35 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-2/tp.git... +Oct 13, 2024 4:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 4:16:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git to complete... +Oct 13, 2024 4:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 4:16:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) completed! +Oct 13, 2024 4:16:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 4:16:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git completed! +Oct 13, 2024 4:16:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-1/tp.git... -Oct 13, 2024 1:25:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:36 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 4:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 4:16:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-1/tp.git to complete... -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 +Oct 13, 2024 4:16:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-1/tp.git completed! -Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-3/tp.git... -Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git to complete... -Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git completed! +Oct 13, 2024 4:16:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-4/tp.git... -Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git completed! +Oct 13, 2024 4:16:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git to complete... -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 +Oct 13, 2024 4:16:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-2/tp.git... -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 +Oct 13, 2024 4:16:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-2/tp.git to complete... -Oct 13, 2024 1:25:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:38 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 +Oct 13, 2024 4:16:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-3/tp.git... -Oct 13, 2024 1:25:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-3/tp.git to complete... -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 +Oct 13, 2024 4:16:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 4:16:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git completed! +Oct 13, 2024 4:16:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-4/tp.git... -Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-4/tp.git to complete... -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 +Oct 13, 2024 4:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 4:16:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) completed! +Oct 13, 2024 4:16:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/120] Analyzing https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 4:16:39 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 4:16:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 4:16:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git completed! +Oct 13, 2024 4:16:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-3/tp.git... -Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git to complete... +Oct 13, 2024 4:16:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-2/tp.git completed! -Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-2/tp.git... -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 +Oct 13, 2024 4:16:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 4:16:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-2/tp.git to complete... -Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 4:16:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) completed! +Oct 13, 2024 4:16:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 4:16:40 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 4:16:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 4:16:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-3/tp.git completed! -Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F11-1/tp.git... -Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F11-1/tp.git to complete... -Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-4/tp.git completed! -Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-1/tp.git... -Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-1/tp.git to complete... -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 +Oct 13, 2024 4:16:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git completed! -Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-3/tp.git... -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 +Oct 13, 2024 4:16:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git to complete... -Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-2/tp.git completed! -Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-1/tp.git... -Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git to complete... -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 +Oct 13, 2024 4:16:42 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 +Oct 13, 2024 4:16:42 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 +Oct 13, 2024 4:16:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git to complete... -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 +Oct 13, 2024 4:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 4:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 4:16:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) completed! +Oct 13, 2024 4:16:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 4:16:43 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 4:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 4:16:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-1/tp.git completed! +Oct 13, 2024 4:16:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-3/tp.git... -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 +Oct 13, 2024 4:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 4:16:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-3/tp.git to complete... -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 +Oct 13, 2024 4:16:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git completed! +Oct 13, 2024 4:16:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-3/tp.git... -Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-3/tp.git to complete... -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 13, 2024 1:25:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git completed! +Oct 13, 2024 4:16:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-4/tp.git... -Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git to complete... -Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 4:16:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) completed! +Oct 13, 2024 4:16:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 4:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 4:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 4:16:44 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 4:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 4:16:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 4:16:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) completed! +Oct 13, 2024 4:16:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 13, 2024 4:16:44 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 +Oct 13, 2024 4:16:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 4:16:44 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 +Oct 13, 2024 4:16:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) completed! +Oct 13, 2024 4:16:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-2/tp.git to complete... -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 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 +Oct 13, 2024 4:16:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/120] Analyzing https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 4:16:44 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 4:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 13, 2024 4:16:44 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 4:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 4:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 4:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 4:16:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) completed! +Oct 13, 2024 4:16:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... +Oct 13, 2024 4:16:45 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 4:16:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... +Oct 13, 2024 4:16:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git completed! +Oct 13, 2024 4:16:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-4/tp.git... -Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-3/tp.git completed! +Oct 13, 2024 4:16:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git to complete... -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 13, 2024 1:25:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git... -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 +Oct 13, 2024 4:16:45 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 +Oct 13, 2024 4:16:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-3/tp.git completed! +Oct 13, 2024 4:16:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-1/tp.git... -Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git to complete... -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 +Oct 13, 2024 4:16:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-2/tp.git completed! -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 +Oct 13, 2024 4:16:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git... -Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git to complete... -Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git completed! +Oct 13, 2024 4:16:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-2/tp.git... -Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git to complete... -Oct 13, 2024 1:25:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git completed! -Oct 13, 2024 1:25:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-3/tp.git... -Oct 13, 2024 1:25:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-3/tp.git to complete... -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 +Oct 13, 2024 4:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 4:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 4:16:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) completed! +Oct 13, 2024 4:16:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [41/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... +Oct 13, 2024 4:16:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git completed! +Oct 13, 2024 4:16:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-2/tp.git... -Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git to complete... +Oct 13, 2024 4:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... +Oct 13, 2024 4:16:48 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 +Oct 13, 2024 4:16:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-3/tp.git... -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 +Oct 13, 2024 4:16:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... +Oct 13, 2024 4:16:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-3/tp.git to complete... -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 +Oct 13, 2024 4:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... +Oct 13, 2024 4:16:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master) completed! +Oct 13, 2024 4:16:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [42/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 4:16:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git completed! +Oct 13, 2024 4:16:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-3/tp.git... -Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-3/tp.git to complete... -Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 4:16:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-3/tp.git completed! -Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 13, 2024 4:16:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-4/tp.git... -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 +Oct 13, 2024 4:16:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-4/tp.git to complete... -Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 4:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 13, 2024 4:16:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) completed! +Oct 13, 2024 4:16:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 13, 2024 4:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 4:16:50 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 4:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 13, 2024 4:16:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) completed! +Oct 13, 2024 4:16:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 4:16:50 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 4:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 4:16:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-3/tp.git completed! -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 +Oct 13, 2024 4:16:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-2/tp.git... -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 +Oct 13, 2024 4:16:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-2/tp.git to complete... -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 +Oct 13, 2024 4:16:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 4:16:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 4:16:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) completed! +Oct 13, 2024 4:16:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/120] Analyzing https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 13, 2024 4:16:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git completed! -Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-3/tp.git... -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 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 +Oct 13, 2024 4:16:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-3/tp.git completed! -Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-3/tp.git to complete... +Oct 13, 2024 4:16:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-2/tp.git... -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 +Oct 13, 2024 4:16:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F11-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:16:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 13, 2024 4:16:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git to complete... -Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-4/tp.git completed! -Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-2/tp.git... -Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-2/tp.git to complete... -Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... +Oct 13, 2024 4:16:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-2/tp.git completed! -Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-2/tp.git... -Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-2/tp.git to complete... -Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... +Oct 13, 2024 4:16:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master) completed! +Oct 13, 2024 4:16:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [46/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... +Oct 13, 2024 4:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 4:16:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:16:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... +Oct 13, 2024 4:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 13, 2024 4:16:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-3/tp.git completed! -Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-4/tp.git... -Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-4/tp.git to complete... -Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 13, 2024 4:16:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) completed! +Oct 13, 2024 4:16:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 13, 2024 4:16:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 4:16:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git completed! -Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) completed! +Oct 13, 2024 4:16:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-3/tp.git... -Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-3/tp.git to complete... -Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 4:16:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 13, 2024 4:16:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-2/tp.git completed! -Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-1a/tp.git... -Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:54 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 4:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 4:16:54 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 +Oct 13, 2024 4:16:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-2/tp.git completed! -Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-3/tp.git... -Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-3/tp.git to complete... -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 +Oct 13, 2024 4:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 13, 2024 4:16:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-4/tp.git completed! -Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-2/tp.git... -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 +Oct 13, 2024 4:16:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-2/tp.git to complete... -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 13, 2024 1:25:22 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 13, 2024 4:16:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) completed! +Oct 13, 2024 4:16:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 4:16:56 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 4:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 4:16:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git completed! +Oct 13, 2024 4:16:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-1/tp.git... -Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-1/tp.git to complete... -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 +Oct 13, 2024 4:16:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-3/tp.git completed! -Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-2/tp.git... -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 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:56 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 +Oct 13, 2024 4:16:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-3/tp.git completed! +Oct 13, 2024 4:16:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-1/tp.git... -Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git to complete... -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 +Oct 13, 2024 4:16:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... +Oct 13, 2024 4:16:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 4:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... +Oct 13, 2024 4:16:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master) completed! +Oct 13, 2024 4:16:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 13, 2024 4:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 4:16:57 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 4:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 13, 2024 4:16:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) completed! +Oct 13, 2024 4:16:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [51/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 4:16:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-2/tp.git completed! -Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:57 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 4:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 4:16:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-2/tp.git... -Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git to complete... -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 +Oct 13, 2024 4:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 4:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 4:16:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) completed! +Oct 13, 2024 4:16:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 13, 2024 4:16:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 13, 2024 4:16:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-1/tp.git completed! -Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-1/tp.git... -Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-1/tp.git to complete... -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 +Oct 13, 2024 4:16:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git completed! -Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-4/tp.git... -Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git to complete... -Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git completed! -Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-1/tp.git... -Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-1/tp.git to complete... -Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:59 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 +Oct 13, 2024 4:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 13, 2024 4:16:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-3/tp.git... -Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:16:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git to complete... -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 13, 2024 1:25:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 4:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 13, 2024 4:16:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) completed! +Oct 13, 2024 4:16:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... +Oct 13, 2024 4:17:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... +Oct 13, 2024 4:17:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git completed! +Oct 13, 2024 4:17:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-2/tp.git... -Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:17:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git to complete... -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 +Oct 13, 2024 4:17:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-1/tp.git completed! +Oct 13, 2024 4:17:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-4/tp.git... -Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:17:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-4/tp.git to complete... -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 +Oct 13, 2024 4:17:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-1/tp.git completed! +Oct 13, 2024 4:17:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-4/tp.git... -Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 4:17:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git to complete... -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 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 +Oct 13, 2024 4:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... +Oct 13, 2024 4:17:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git completed! +Oct 13, 2024 4:17:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-3/tp.git... -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 +Oct 13, 2024 4:17:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git to complete... -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 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 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-4/tp.git completed! -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 13, 2024 1:25:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 4:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master) completed! -Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:01 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 +Oct 13, 2024 4:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 4:17:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) completed! +Oct 13, 2024 4:17:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... +Oct 13, 2024 4:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 13, 2024 4:17:02 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 +Oct 13, 2024 4:17:02 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 +Oct 13, 2024 4:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 13, 2024 4:17:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git completed! +Oct 13, 2024 4:17:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-4/tp.git... +Oct 13, 2024 4:17:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... +Oct 13, 2024 4:17:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git to complete... +Oct 13, 2024 4:17:02 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 +Oct 13, 2024 4:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 13, 2024 4:17:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master) completed! +Oct 13, 2024 4:17:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... +Oct 13, 2024 4:17:02 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 +Oct 13, 2024 4:17:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [57/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 13, 2024 4:17:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -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 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 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 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 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 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 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 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 +Oct 13, 2024 4:17:02 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 +Oct 13, 2024 4:17:02 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 +Oct 13, 2024 4:17:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-4/tp.git completed! +Oct 13, 2024 4:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 13, 2024 4:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 13, 2024 4:17:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) completed! +Oct 13, 2024 4:17:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... +Oct 13, 2024 4:17:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... +Oct 13, 2024 4:17:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git completed! +Oct 13, 2024 4:17:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git completed! +Oct 13, 2024 4:17:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git completed! +Oct 13, 2024 4:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -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 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 4:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) completed! -Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [59/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -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 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 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 4:17:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) completed! +Oct 13, 2024 4:17:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [60/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -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 +Oct 13, 2024 4:17:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... +Oct 13, 2024 4:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... +Oct 13, 2024 4:17:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) completed! +Oct 13, 2024 4:17:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... +Oct 13, 2024 4:17:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... +Oct 13, 2024 4:17:05 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 +Oct 13, 2024 4:17:05 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 +Oct 13, 2024 4:17:05 AM reposense.report.ReportGenerator analyzeRepos INFO: [62/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:05 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 +Oct 13, 2024 4:17:05 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 +Oct 13, 2024 4:17:05 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 +Oct 13, 2024 4:17:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 13, 2024 1:25:38 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master) completed! -Oct 13, 2024 1:25:38 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:05 AM reposense.report.ReportGenerator analyzeRepos INFO: [63/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 13, 2024 1:25:38 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-3/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-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 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 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 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 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 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:06 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 13, 2024 1:25:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... +Oct 13, 2024 4:17:06 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 +Oct 13, 2024 4:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master) completed! -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 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:06 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 +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [64/120] Analyzing https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [65/120] Analyzing https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F12-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... +Oct 13, 2024 4:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... +Oct 13, 2024 4:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) completed! +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/120] Analyzing https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... +Oct 13, 2024 4:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) completed! +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F09-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [67/120] Analyzing https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... +Oct 13, 2024 4:17:07 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 4:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... +Oct 13, 2024 4:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 13, 2024 1:25:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-1/tp.git (master) completed! -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 +Oct 13, 2024 4:17:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/120] Analyzing https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... +Oct 13, 2024 4:17:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 13, 2024 1:25:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... +Oct 13, 2024 4:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -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 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 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 13, 2024 1:25:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:08 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 +Oct 13, 2024 4:17:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-2/tp.git (master) completed! +Oct 13, 2024 4:17:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [69/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... +Oct 13, 2024 4:17:08 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 +Oct 13, 2024 4:17:08 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 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 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 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... +Oct 13, 2024 4:17:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 4:17:08 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 4:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 4:17:08 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 +Oct 13, 2024 4:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-2/tp.git (master) completed! -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 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 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 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:09 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 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 +Oct 13, 2024 4:17:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [71/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... +Oct 13, 2024 4:17:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 4:17:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... +Oct 13, 2024 4:17:09 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 +Oct 13, 2024 4:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 4:17:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) completed! +Oct 13, 2024 4:17:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) completed! +Oct 13, 2024 4:17:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 4:17:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... +Oct 13, 2024 4:17:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... +Oct 13, 2024 4:17:09 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 +Oct 13, 2024 4:17:09 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 +Oct 13, 2024 4:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... +Oct 13, 2024 4:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... +Oct 13, 2024 4:17:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master) completed! +Oct 13, 2024 4:17:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [74/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 4:17:10 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 +Oct 13, 2024 4:17:10 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 +Oct 13, 2024 4:17:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [75/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -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 +Oct 13, 2024 4:17:10 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 +Oct 13, 2024 4:17:10 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 +Oct 13, 2024 4:17:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [76/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -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 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 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 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 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 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 13, 2024 1:25:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:11 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 +Oct 13, 2024 4:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master) completed! -Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [77/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... +Oct 13, 2024 4:17:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... +Oct 13, 2024 4:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... +Oct 13, 2024 4:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... +Oct 13, 2024 4:17:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) completed! +Oct 13, 2024 4:17:11 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 +Oct 13, 2024 4:17:11 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 +Oct 13, 2024 4:17:11 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 +Oct 13, 2024 4:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... +Oct 13, 2024 4:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master) completed! -Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:12 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 +Oct 13, 2024 4:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... +Oct 13, 2024 4:17:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master) completed! +Oct 13, 2024 4:17:12 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 +Oct 13, 2024 4:17:12 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 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 13, 2024 1:25:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [80/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 4:17:12 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 4:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 4:17:13 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 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 +Oct 13, 2024 4:17:13 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 +Oct 13, 2024 4:17:13 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 +Oct 13, 2024 4:17:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... +Oct 13, 2024 4:17:13 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 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 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:13 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 4:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... +Oct 13, 2024 4:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master) completed! -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 +Oct 13, 2024 4:17:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... +Oct 13, 2024 4:17:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... +Oct 13, 2024 4:17:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 13, 2024 1:25:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) completed! -Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [83/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 4:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 4:17:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) completed! +Oct 13, 2024 4:17:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... +Oct 13, 2024 4:17:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... +Oct 13, 2024 4:17:14 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 +Oct 13, 2024 4:17:15 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 +Oct 13, 2024 4:17:15 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 +Oct 13, 2024 4:17:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [85/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... +Oct 13, 2024 4:17:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -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 +Oct 13, 2024 4:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master) completed! -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 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 +Oct 13, 2024 4:17:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [86/120] Analyzing https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... +Oct 13, 2024 4:17:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -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 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 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 13, 2024 1:25:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... +Oct 13, 2024 4:17:15 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 +Oct 13, 2024 4:17:15 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 +Oct 13, 2024 4:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... +Oct 13, 2024 4:17:15 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 +Oct 13, 2024 4:17:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) completed! +Oct 13, 2024 4:17:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [87/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -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 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 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 +Oct 13, 2024 4:17:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [88/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... +Oct 13, 2024 4:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... +Oct 13, 2024 4:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -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 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 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 +Oct 13, 2024 4:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -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 +Oct 13, 2024 4:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... +Oct 13, 2024 4:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... +Oct 13, 2024 4:17:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master) completed! -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 +Oct 13, 2024 4:17:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) completed! +Oct 13, 2024 4:17:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [89/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... +Oct 13, 2024 4:17:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master) completed! +Oct 13, 2024 4:17:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [90/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... +Oct 13, 2024 4:17:16 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 +Oct 13, 2024 4:17:16 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 4:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... +Oct 13, 2024 4:17:16 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 +Oct 13, 2024 4:17:16 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 +Oct 13, 2024 4:17:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... +Oct 13, 2024 4:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master) completed! -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 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [92/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 4:17:17 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 4:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 4:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... +Oct 13, 2024 4:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... +Oct 13, 2024 4:17:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) completed! +Oct 13, 2024 4:17:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [93/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -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 +Oct 13, 2024 4:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 4:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... +Oct 13, 2024 4:17:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master) completed! +Oct 13, 2024 4:17:17 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 +Oct 13, 2024 4:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 4:17:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) completed! +Oct 13, 2024 4:17:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -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 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 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 13, 2024 1:25:50 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [95/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:18 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 +Oct 13, 2024 4:17:18 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 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 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... +Oct 13, 2024 4:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... +Oct 13, 2024 4:17:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master) completed! +Oct 13, 2024 4:17:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [96/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -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 +Oct 13, 2024 4:17:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... +Oct 13, 2024 4:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... +Oct 13, 2024 4:17:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master) completed! -Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [97/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... +Oct 13, 2024 4:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master) completed! -Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [98/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -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 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 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 +Oct 13, 2024 4:17:19 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 +Oct 13, 2024 4:17:19 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 +Oct 13, 2024 4:17:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [99/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... +Oct 13, 2024 4:17:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) completed! -Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [100/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-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-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-2/tp.git (master)... -Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:20 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 +Oct 13, 2024 4:17:20 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 +Oct 13, 2024 4:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... +Oct 13, 2024 4:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 4:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... +Oct 13, 2024 4:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... +Oct 13, 2024 4:17:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master) completed! -Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [101/120] Analyzing https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 4:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... +Oct 13, 2024 4:17:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F10-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-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-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 +Oct 13, 2024 4:17:21 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 +Oct 13, 2024 4:17:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) completed! +Oct 13, 2024 4:17:21 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 +Oct 13, 2024 4:17:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [103/120] Analyzing https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... +Oct 13, 2024 4:17:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -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 +Oct 13, 2024 4:17:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... +Oct 13, 2024 4:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... +Oct 13, 2024 4:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:22 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 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 13, 2024 1:25:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [104/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... +Oct 13, 2024 4:17:22 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 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 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 13, 2024 1:25:54 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:22 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 +Oct 13, 2024 4:17:22 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 +Oct 13, 2024 4:17:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [105/120] Analyzing https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 13, 2024 4:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... +Oct 13, 2024 4:17:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) completed! +Oct 13, 2024 4:17:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [106/120] Analyzing https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 4:17:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 13, 2024 4:17:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 4:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 4:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 4:17:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) completed! +Oct 13, 2024 4:17:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [107/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 13, 2024 1:25:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... +Oct 13, 2024 4:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 13, 2024 1:25:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... +Oct 13, 2024 4:17:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) completed! +Oct 13, 2024 4:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:23 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) completed! -Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [108/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [109/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... +Oct 13, 2024 4:17:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -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 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 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 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 +Oct 13, 2024 4:17:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -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 +Oct 13, 2024 4:17:24 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 +Oct 13, 2024 4:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... +Oct 13, 2024 4:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master) completed! +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [110/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -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 +Oct 13, 2024 4:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) completed! +Oct 13, 2024 4:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [111/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -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 +Oct 13, 2024 4:17:24 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 +Oct 13, 2024 4:17:24 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 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 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 13, 2024 1:25:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [112/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 13, 2024 4:17:24 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 4:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 13, 2024 4:17:24 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 +Oct 13, 2024 4:17:24 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 +Oct 13, 2024 4:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master) completed! -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 13, 2024 1:25:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [113/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... +Oct 13, 2024 4:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master) completed! -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 13, 2024 1:25:58 AM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 4:17:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [114/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... +Oct 13, 2024 4:17:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 4:17:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... +Oct 13, 2024 4:17:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:25 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 +Oct 13, 2024 4:17:25 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 +Oct 13, 2024 4:17:25 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 +Oct 13, 2024 4:17:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [115/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 4:17:25 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 +Oct 13, 2024 4:17:25 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 +Oct 13, 2024 4:17:26 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 13, 2024 1:25:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:26 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 +Oct 13, 2024 4:17:26 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 +Oct 13, 2024 4:17:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [116/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 4:17:26 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 4:17:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 4:17:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 4:17:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... +Oct 13, 2024 4:17:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 4:17:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) completed! +Oct 13, 2024 4:17:26 AM reposense.report.ReportGenerator analyzeRepos INFO: [117/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-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-T08-1/tp.git (master)... -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 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 +Oct 13, 2024 4:17:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... +Oct 13, 2024 4:17:26 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 +Oct 13, 2024 4:17:26 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 +Oct 13, 2024 4:17:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 4:17:26 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 +Oct 13, 2024 4:17:27 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 +Oct 13, 2024 4:17:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [118/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... +Oct 13, 2024 4:17:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 4:17:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... +Oct 13, 2024 4:17:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) completed! +Oct 13, 2024 4:17:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master) completed! +Oct 13, 2024 4:17:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [119/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... +Oct 13, 2024 4:17:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [120/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 4:17:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Oct 13, 2024 1:25:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 4:17:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 4:17:27 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 4:17:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... +Oct 13, 2024 4:17:27 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 4:17:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 4:17:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -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 +Oct 13, 2024 4:17:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master) completed! -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 +Oct 13, 2024 4:17:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -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 +Oct 13, 2024 4:17:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) completed! -Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 4:17:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... +Oct 13, 2024 4:17:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 4:17:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master) completed! -Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator generateReposReport +Oct 13, 2024 4:17:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 4:17:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 4:17:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) completed! +Oct 13, 2024 4:17:28 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Oct 13, 2024 1:26:02 AM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 30.79 second(s) +Oct 13, 2024 4:17:30 AM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 32.96 second(s) diff --git a/summary.json b/summary.json index 73da15c8..4fa5d26d 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"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)"}}} +{"repoSenseVersion":"03dd38d625","reportGeneratedTime":"Sun, 13 Oct 2024 12:15:58 UTC+08:00","reportGenerationTime":" 1 minute(s) 31.47 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)"}}}